
The constructed inventory plugin allows expressing additional groups, but it's too heavy weight for our needs. Additionally, it is a full inventory plugin that will add hosts to the inventory if they don't exist. What we want instead is something that will associate existing hosts (that would have come from another source) with groups. This also switches to using emergency.yaml instead of emergency, which uses the same format. We add an extra groups file for gate testing to ensure the CI nodes get puppet installed. Change-Id: Iea8b2eb2e9c723aca06f75d3d3307893e320cced
72 lines
2.7 KiB
YAML
72 lines
2.7 KiB
YAML
- import_playbook: ../bridge.yaml
|
|
vars:
|
|
root_rsa_key: "{{ lookup('file', zuul.executor.work_root + '/' + zuul.build + '_id_rsa') }}"
|
|
|
|
- hosts: bridge.openstack.org
|
|
become: true
|
|
tasks:
|
|
- name: Write inventory on bridge
|
|
include_role:
|
|
name: write-inventory
|
|
vars:
|
|
write_inventory_dest: /etc/ansible/hosts/inventory.yaml
|
|
write_inventory_exclude_hostvars:
|
|
- ansible_user
|
|
- name: Set up /opt/system-config repo
|
|
git:
|
|
repo: /home/zuul/src/git.openstack.org/openstack-infra/system-config
|
|
dest: /opt/system-config
|
|
force: yes
|
|
- name: Add groups config for test nodes
|
|
template:
|
|
src: "templates/gate-groups.yaml.j2"
|
|
dest: "/etc/ansible/hosts/gate-groups.yaml"
|
|
- name: Update ansible.cfg to use job inventory
|
|
ini_file:
|
|
path: /etc/ansible/ansible.cfg
|
|
section: defaults
|
|
option: inventory
|
|
value: /etc/ansible/hosts/inventory.yaml,/opt/system-config/inventory/groups.yaml,/etc/ansible/hosts/gate-groups.yaml
|
|
- name: Update ansible.cfg to use yamlgroup plugin
|
|
ini_file:
|
|
path: /etc/ansible/ansible.cfg
|
|
section: defaults
|
|
option: inventory_plugins
|
|
value: /home/zuul/src/git.openstack.org/openstack-infra/system-config/playbooks/roles/install-ansible/files/inventory_plugins
|
|
- name: Update ansible.cfg to configure inventory plugins
|
|
ini_file:
|
|
path: /etc/ansible/ansible.cfg
|
|
section: inventory
|
|
option: enable_plugins
|
|
value: yamlgroup,yaml,advanced_host_list,ini
|
|
- name: Make host_vars directory
|
|
file:
|
|
path: "/etc/ansible/hosts/host_vars"
|
|
state: directory
|
|
- name: Make group_vars directory
|
|
file:
|
|
path: "/etc/ansible/hosts/group_vars"
|
|
state: directory
|
|
- name: Write hostvars files
|
|
vars:
|
|
bastion_ipv4: "{{ nodepool['public_ipv4'] }}"
|
|
bastion_ipv6: "{{ nodepool['public_ipv6'] }}"
|
|
bastion_public_key: "{{ lookup('file', zuul.executor.work_root + '/' + zuul.build + '_id_rsa.pub') }}"
|
|
iptables_test_public_tcp_ports: [19885]
|
|
template:
|
|
src: "templates/{{ item }}.j2"
|
|
dest: "/etc/ansible/hosts/{{ item }}"
|
|
loop:
|
|
- group_vars/all.yaml
|
|
- group_vars/nodepool.yaml
|
|
- host_vars/bridge.openstack.org.yaml
|
|
- name: Display group membership
|
|
command: ansible localhost -m debug -a 'var=groups'
|
|
- name: Run base.yaml
|
|
command: ansible-playbook -v /home/zuul/src/git.openstack.org/openstack-infra/system-config/playbooks/base.yaml
|
|
- name: Run testinfra to validate configuration
|
|
include_role:
|
|
name: tox
|
|
vars:
|
|
tox_envlist: testinfra
|