From d154d4062c893621e91ea19da50076fe656276e1 Mon Sep 17 00:00:00 2001 From: Guillaume Coré <guillaume.core@gmail.com> Date: Mon, 13 Jan 2020 16:11:00 +0100 Subject: [PATCH] Osp migration bp (#982) --- ansible/roles/infra-osp-create-inventory/tasks/main.yml | 71 ++++++++++++++++++----------------- 1 files changed, 36 insertions(+), 35 deletions(-) diff --git a/ansible/roles/infra-osp-create-inventory/tasks/main.yml b/ansible/roles/infra-osp-create-inventory/tasks/main.yml index 4acb9c2..d9c5a55 100644 --- a/ansible/roles/infra-osp-create-inventory/tasks/main.yml +++ b/ansible/roles/infra-osp-create-inventory/tasks/main.yml @@ -1,5 +1,8 @@ --- - set_fact: + _name_selector: name + +- set_fact: stack_tag: "{{env_type | replace('-', '_')}}_{{guid}}" tags: - create_inventory @@ -8,87 +11,85 @@ # Find the bastion - name: Find the bastion in this batch of host set_fact: - local_bastion: "{{ host.name }}" + local_bastion: "{{ server | json_query(_name_selector) | default(server.name) }}" when: - - host.status != 'terminated' - - '"bastions" in host.metadata.AnsibleGroup' + - server.status != 'terminated' + - '"bastions" in server.metadata.AnsibleGroup | default("")' loop: "{{ r_osp_facts.ansible_facts.openstack_servers }}" loop_control: - label: "{{ host.name | default(host.name) }}" - loop_var: host + label: "{{ server | json_query(_name_selector) | default(server.name) }}" + loop_var: server ignore_errors: yes tags: - create_inventory - must -- when: host.status != 'terminated' +- when: server.status != 'terminated' block: - name: Add hosts to inventory add_host: - name: "{{ host.name }}" + name: "{{ server | json_query(_name_selector) | default(server.name) }}" + original_name: "{{ server.name }}" groups: #TODO: remove thos tag_* - "tag_Project_{{stack_tag}}" - "tag_{{ stack_tag}} | default('unknowns') }}" - - "{{ host.metadata.ostype | default('unknowns') }}" + - "{{ server.metadata.ostype | default('unknowns') }}" ansible_user: "{{ ansible_user }}" remote_user: "{{ remote_user }}" # ansible_ssh_private_key_file: "{{item['key_name']}}" # key_name: "{{item['key_name']}}" - state: "{{ host.status }}" - instance_id: "{{ host.id }}" - isolated: "{{ host.metadata.isolated | default(false) }}" + state: "{{ server.status }}" + instance_id: "{{ server.id }}" + isolated: "{{ server.metadata.isolated | default(false) }}" # private_dns_name: "{{item['private_dns_name']}}" - private_ip_address: "{{ host.private_v4 }}" - public_ip_address: "{{ host.public_v4 | default('') }}" - image_id: "{{ host.image.id | default('') }}" + private_ip_address: "{{ server.private_v4 }}" + public_ip_address: "{{ server.public_v4 | default('') }}" + image_id: "{{ server.image.id | default('') }}" ansible_ssh_extra_args: "-o StrictHostKeyChecking=no" bastion: "{{ local_bastion | default('') }}" loop: "{{ r_osp_facts.ansible_facts.openstack_servers }}" loop_control: - label: "{{ host.name }}" - loop_var: host + label: "{{ server | json_query(_name_selector) | default(server.name) }}" + loop_var: server tags: - create_inventory - must - add_host: - name: "{{ host.name }}" - groups: "{{ host.metadata.AnsibleGroup }}" + name: "{{ server | json_query(_name_selector) | default(server.name) }}" + groups: "{{ server.metadata.AnsibleGroup }}" loop: "{{ r_osp_facts.ansible_facts.openstack_servers }}" loop_control: - label: "{{ host.name }}" - loop_var: host + label: "{{ server | json_query(_name_selector) | default(server.name) }}" + loop_var: server + when: server.metadata.AnsibleGroup | default('') != '' tags: - create_inventory - must - - name: Make sure bastion has public DNS name defined - add_host: - name: "{{ host.name }}" - public_dns_name: "{{ host.name }}.{{ guid }}.{{osp_cluster_dns_zone}}" - loop: "{{ r_osp_facts.ansible_facts.openstack_servers }}" - loop_control: - label: "{{ host.name }}" - loop_var: host - when: - - host.name in groups['bastions'] - - host.public_v4 != '' +- name: Make sure bastion has public DNS name defined + add_host: + name: "{{ host }}" + public_dns_name: "{{ host }}.{{ guid }}.{{osp_cluster_dns_zone}}" + loop: "{{ groups['bastions'] }}" + loop_control: + loop_var: host + when: hostvars[host].public_ip_address != '' - debug: var: hostvars[local_bastion].public_ip_address - debug: - msg: "bastion IP is {{ lookup('dig',local_bastion ~ '.' ~ guid ~ '.' ~ osp_cluster_dns_zone) }}" + msg: >- + bastion IP is {{ lookup('dig', hostvars[local_bastion].public_dns_name) }} ignore_errors: true - name: Verify that DNS matches bastion host_var assert: that: # Requires dnspython library - - lookup('dig', bastion_lookup) == hostvars[local_bastion].public_ip_address - vars: - bastion_lookup: "{{ local_bastion ~ '.' ~ guid ~ '.' ~ osp_cluster_dns_zone }}" + - lookup('dig', hostvars[local_bastion].public_dns_name) == hostvars[local_bastion].public_ip_address - name: debug hostvars debug: -- Gitblit v1.9.3