123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- ---
- - no_log: true
- block:
- - name: fetch all nodes from openstack shade dynamic inventory
- command: shade-inventory --list
- register: registered_nodes_output
- when: refresh_inventory|bool
- - name: set fact for openstack inventory cluster nodes
- set_fact:
- registered_nodes: "{{ (registered_nodes_output.stdout | from_json) | json_query(q) }}"
- vars:
- q: "[] | [?metadata.clusterid=='{{stack_name}}']"
- when:
- - refresh_inventory|bool
- - name: set_fact for openstack inventory nodes
- set_fact:
- registered_bastion_nodes: "{{ (registered_nodes_output.stdout | from_json) | json_query(q) }}"
- registered_nodes_floating: "{{ (registered_nodes_output.stdout | from_json) | json_query(q2) }}"
- vars:
- q: "[] | [?metadata.group=='infra.{{stack_name}}']"
- q2: "[] | [?metadata.clusterid=='{{stack_name}}'] | [?public_v4!='']"
- when:
- - refresh_inventory|bool
- - name: set_fact for openstack inventory nodes with provider network
- set_fact:
- registered_nodes_floating: "{{ (registered_nodes_output.stdout | from_json) | json_query(q) }}"
- vars:
- q: "[] | [?metadata.clusterid=='{{stack_name}}'] | [?public_v4=='']"
- when:
- - refresh_inventory|bool
- - openstack_provider_network_name|default(None)
- - name: Add cluster nodes w/o floating IPs to inventory
- with_items: "{{ registered_nodes|difference(registered_nodes_floating) }}"
- add_host:
- name: '{{ item.name }}'
- ansible_host: >-
- {% if use_bastion|bool -%}
- {{ item.name }}
- {%- else -%}
- {%- set node = registered_nodes | json_query("[?name=='" + item.name + "']") -%}
- {{ node[0].addresses[openstack_private_network|quote][0].addr }}
- {%- endif %}
- ansible_fqdn: '{{ item.name }}'
- ansible_user: '{{ ssh_user }}'
- ansible_private_key_file: '{{ private_ssh_key }}'
- ansible_ssh_extra_args: '-F {{ ssh_config_path }}'
- private_v4: >-
- {% set node = registered_nodes | json_query("[?name=='" + item.name + "']") -%}
- {{ node[0].addresses[openstack_private_network|quote][0].addr }}
- - name: Add cluster nodes with floating IPs to inventory
- with_items: "{{ registered_nodes_floating }}"
- add_host:
- name: '{{ item.name }}'
- ansible_host: >-
- {% if use_bastion|bool -%}
- {{ item.name }}
- {%- elif openstack_provider_network_name|default(None) -%}
- {{ item.private_v4 }}
- {%- else -%}
- {{ item.public_v4 }}
- {%- endif %}
- ansible_fqdn: '{{ item.name }}'
- ansible_user: '{{ ssh_user }}'
- ansible_private_key_file: '{{ private_ssh_key }}'
- ansible_ssh_extra_args: '-F {{ ssh_config_path }}'
- private_v4: >-
- {% set node = registered_nodes | json_query("[?name=='" + item.name + "']") -%}
- {{ node[0].addresses[openstack_private_network|quote][0].addr }}
- public_v4: >-
- {% if openstack_provider_network_name|default(None) -%}
- {{ item.private_v4 }}
- {%- else -%}
- {{ item.public_v4 }}
- {%- endif %}
- # Split registered_nodes into old nodes and new app nodes
- # Add new app nodes to new_nodes host group for upscaling
- - name: Create new_app_nodes variable
- set_fact:
- new_app_nodes: []
- - name: Filter new app nodes out of registered_nodes
- include: filter_out_new_app_nodes.yaml
- with_items: "{{ registered_nodes }}"
- loop_control:
- loop_var: node
- - name: Add new app nodes to the new_nodes section (if a deployment already exists)
- with_items: "{{ new_app_nodes }}"
- add_host:
- name: "{{ item.name }}"
- groups: new_nodes, app
- - name: Add the rest of cluster nodes to their corresponding groups
- with_items: "{{ registered_nodes }}"
- add_host:
- name: '{{ item.name }}'
- groups: '{{ item.metadata.group }}'
- - name: Add bastion node to inventory
- add_host:
- name: bastion
- groups: bastions
- ansible_host: '{{ registered_bastion_nodes[0].public_v4 }}'
- ansible_fqdn: '{{ registered_bastion_nodes[0].name }}'
- ansible_user: '{{ ssh_user }}'
- ansible_private_key_file: '{{ private_ssh_key }}'
- ansible_ssh_extra_args: '-F {{ ssh_config_path }}'
- private_v4: >-
- {% set node = registered_nodes | json_query("[?name=='" + registered_bastion_nodes[0].name + "']") -%}
- {{ node[0].addresses[openstack_private_network|quote][0].addr }}
- public_v4: '{{ registered_bastion_nodes[0].public_v4 }}'
- when:
- - registered_bastion_nodes is defined
- - use_bastion|bool
|