kayobe/playbooks/kayobe-base/pre.yml
Will Szumski 2c86ba774e CI: Workaround rc:-13 issue
There is a race condition in Ansible that can result in this failure:

  msg: |-
  MODULE FAILURE
  See stdout/stderr for the exact error
  rc: -13

Disabling SSH pipelining prevents the issue at the cost of Ansible
execution duration.

See:
 - https://github.com/ansible/ansible/issues/78344
 - https://github.com/ansible/ansible/issues/81777

Change-Id: I62221df4650ddd02afdbc0993e783bf66b706a1c
2024-09-18 09:44:35 +01:00

135 lines
4.6 KiB
YAML

---
- hosts: primary
vars:
ansible_cfg: |
[defaults]
# Ensure that facts are referenced via ansible_facts.<fact>.
inject_facts_as_vars = False
# Test with fact caching enabled
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/kayobe-facts
# Add timing information to output
callbacks_enabled = ansible.posix.profile_tasks
[ssh_connection]
# NOTE(wszusmki): Disable pipelining due to:
# https://github.com/ansible/ansible/issues/81777
pipelining = False
retries = 3
ansible_cfg_kolla: |
[defaults]
# Ensure that facts are referenced via ansible_facts.<fact>.
inject_facts_as_vars = False
# Test with fact caching enabled
gathering = smart
fact_caching = jsonfile
fact_caching_connection = /tmp/kolla-ansible-facts
# Add timing information to output
callbacks_enabled = ansible.posix.profile_tasks
[ssh_connection]
# NOTE(wszusmki): Disable pipelining due to:
# https://github.com/ansible/ansible/issues/81777
pipelining = False
retries = 3
roles:
- role: kayobe-diagnostics
kayobe_diagnostics_phase: "pre"
kayobe_diagnostics_log_dir: "{{ logs_dir }}"
- role: kayobe-ci-prep
tasks:
# NOTE(mgoddard): Copying upper constraints to somewhere accessible by both
# the zuul and stack users.
- name: Ensure upper-constraints.txt exists
copy:
src: "{{ requirements_src_dir }}/upper-constraints.txt"
dest: "/tmp"
mode: 0644
remote_src: true
- name: Ensure kayobe is executed in verbose mode
lineinfile:
path: "{{ kayobe_src_dir }}/dev/config.sh"
line: "export KAYOBE_EXTRA_ARGS=-vvv"
regexp: "^#export KAYOBE_EXTRA_ARGS=$"
- name: Ensure ansible.cfg exists for Kayobe
copy:
content: "{{ ansible_cfg }}"
dest: "{{ kayobe_config_src_dir }}/etc/kayobe/ansible.cfg"
- name: Ensure ansible.cfg exists for Kolla Ansible
copy:
content: "{{ ansible_cfg_kolla }}"
dest: "{{ kayobe_config_src_dir }}/etc/kayobe/kolla/ansible.cfg"
- name: Update kayobe requirements.yml
include_role:
name: kayobe-galaxy-requirements
vars:
kayobe_galaxy_requirements_src_dir: "{{ kayobe_src_dir }}"
- name: Update kolla-ansible requirements.yml
include_role:
name: kayobe-galaxy-requirements
vars:
kayobe_galaxy_requirements_src_dir: "{{ kolla_ansible_src_dir }}"
kayobe_galaxy_requirements_dest_path: "/tmp/kolla-ansible-requirements.yml"
- block:
- name: Ensure previous kayobe directory exists
file:
path: "{{ previous_kayobe_src_dir }}"
state: directory
- name: Ensure previous kayobe repository is cloned
command: >-
git clone {{ kayobe_src_dir }} {{ previous_kayobe_src_dir }} -b stable/{{ previous_release | lower }}
- name: Ensure previous kayobe-config directory exists
file:
path: "{{ previous_kayobe_config_src_dir }}"
state: directory
- name: Ensure kayobe-config repository is cloned
command: >-
git clone {{ kayobe_config_src_dir }} {{ previous_kayobe_config_src_dir }} -b stable/{{ previous_release | lower }}
- name: Ensure previous kolla-ansible directory exists
file:
path: "{{ previous_kolla_ansible_src_dir }}"
state: directory
- name: Ensure previous kolla-ansible repository is cloned
command: >-
git clone {{ kolla_ansible_src_dir }} {{ previous_kolla_ansible_src_dir }} -b stable/{{ previous_release | lower }}
- name: Ensure previous kayobe is executed in verbose mode
lineinfile:
path: "{{ previous_kayobe_src_dir }}/dev/config.sh"
line: "export KAYOBE_EXTRA_ARGS=-vvv"
regexp: "^#export KAYOBE_EXTRA_ARGS=$"
- name: Update kayobe requirements.yml
include_role:
name: kayobe-galaxy-requirements
vars:
kayobe_galaxy_requirements_src_dir: "{{ previous_kayobe_src_dir }}"
kayobe_galaxy_requirements_branch: "stable/{{ previous_release | lower }}"
- name: Update kolla-ansible requirements.yml
include_role:
name: kayobe-galaxy-requirements
vars:
kayobe_galaxy_requirements_src_dir: "{{ previous_kolla_ansible_src_dir }}"
kayobe_galaxy_requirements_branch: "stable/{{ previous_release | lower }}"
kayobe_galaxy_requirements_dest_path: "/tmp/previous-kolla-ansible-requirements.yml"
when: is_upgrade