68b50ca05b
In launch-node, we run two playbooks that aren't part of base. One sets the system's hostname and removes cloud-init, the other runs unattended update. We need to run the hostname setting in our functional tests so that the hosts behave as expected, but running the cloud-init removal is a little weird, since our test nodes already don't have it. Make it so that set-hostname actually just sets the hostname, and then run it in run-base. For running puppet, we need the host to have the correct hostname. Move cloud-init removal to the base-server role. Also move the autoremove into base-server, since it's probably a nice way to get rid of excess things. Change-Id: I53cb8c515444a7d73b839e799c5794b067429daa
114 lines
4.6 KiB
YAML
114 lines
4.6 KiB
YAML
- import_playbook: ../install-ansible.yaml
|
|
vars:
|
|
root_rsa_key: "{{ lookup('file', zuul.executor.work_root + '/' + zuul.build + '_id_rsa') }}"
|
|
ansible_cron_disable_job: true
|
|
cloud_launcher_disable_job: true
|
|
|
|
- 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
|
|
- ansible_python_interpreter
|
|
- 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,/etc/ansible/hosts/groups.yaml,/etc/ansible/hosts/gate-groups.yaml
|
|
- 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/adns.yaml
|
|
- group_vars/nodepool.yaml
|
|
- group_vars/ns.yaml
|
|
- group_vars/registry.yaml
|
|
- group_vars/gitea.yaml
|
|
- group_vars/gitea-lb.yaml
|
|
- group_vars/letsencrypt.yaml
|
|
- group_vars/registry.yaml
|
|
- group_vars/review.yaml
|
|
- group_vars/review-dev.yaml
|
|
- group_vars/control-plane-clouds.yaml
|
|
- group_vars/afs-client.yaml
|
|
- host_vars/bridge.openstack.org.yaml
|
|
- host_vars/etherpad01.opendev.org.yaml
|
|
- host_vars/letsencrypt01.opendev.org.yaml
|
|
- host_vars/letsencrypt02.opendev.org.yaml
|
|
- host_vars/gitea99.opendev.org.yaml
|
|
- host_vars/mirror01.openafs.provider.opendev.org.yaml
|
|
- host_vars/mirror-update01.opendev.org.yaml
|
|
- host_vars/backup-test01.opendev.org.yaml
|
|
- host_vars/backup-test02.opendev.org.yaml
|
|
- host_vars/nb01-test.opendev.org.yaml
|
|
- name: Display group membership
|
|
command: ansible localhost -m debug -a 'var=groups'
|
|
|
|
# In prod, bridge installs a zuul user, but in zuul we already have a zuul user, so we really need
|
|
# to not modify it.
|
|
- name: Load bridge hostvars
|
|
slurp:
|
|
path: /home/zuul/src/opendev.org/opendev/system-config/playbooks/host_vars/bridge.openstack.org.yaml
|
|
register: bridge_hostvar_content
|
|
- name: Parse bridge_hostvars
|
|
set_fact:
|
|
bridge_hostvars: "{{ bridge_hostvar_content.content | b64decode | from_yaml }}"
|
|
- name: Overwrite extra_users
|
|
vars:
|
|
new_config:
|
|
extra_users: []
|
|
set_fact:
|
|
bridge_hostvars: "{{ bridge_hostvars | combine(new_config) }}"
|
|
- name: Save bridge hostvars
|
|
copy:
|
|
content: "{{ bridge_hostvars | to_nice_yaml }}"
|
|
dest: /home/zuul/src/opendev.org/opendev/system-config/playbooks/host_vars/bridge.openstack.org.yaml
|
|
become: true
|
|
|
|
- name: Set hostname on host
|
|
command: ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/playbooks/set-hostnames.yaml
|
|
- name: Run base.yaml
|
|
command: ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/playbooks/base.yaml
|
|
- name: Run bridge service playbook
|
|
command: ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/playbooks/service-bridge.yaml
|
|
- name: Run playbook
|
|
when: run_playbooks is defined
|
|
loop: "{{ run_playbooks }}"
|
|
command: "ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/{{ item }}"
|
|
- name: Run test playbook
|
|
when: run_test_playbook is defined
|
|
shell: "ANSIBLE_ROLES_PATH=/home/zuul/src/opendev.org/opendev/system-config/playbooks/roles ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/{{ run_test_playbook }}"
|
|
- name: Run testinfra to validate configuration
|
|
include_role:
|
|
name: tox
|
|
vars:
|
|
tox_envlist: testinfra
|
|
# This allows us to run from external projects (like testinfra
|
|
# itself)
|
|
zuul_work_dir: src/opendev.org/opendev/system-config
|