ebf5c96d57
This adds support for Ansible 5. As mentioned in the reno, only the major version is specified; that corresponds to major.minor in Ansible core, so is approximately equivalent to our current regime. The command module is updated to be based on the current code in ansible core 2.12.4 (corresponding to community 5.6.0). The previous version is un-symlinked and copied to the 2.8 and 2.8 directories for easy deletion as they age out. The new command module has corrected a code path we used to test that the zuul_stream module handles python exceptions in modules, so instead we now take advantage of the ability to load playbook-adjacent modules to add a test fixture module that always raises an exception. The zuul stream functional test validation is adjusted to match the new values. Similarly, in test_command in the remote tests, we relied on that behavior, but there is already a test for module exceptions in test_module_exception, so that check is simply removed. Among our Ansible version tests, we occasionally had tests which exercised 2.8 but not 2.9 because it is the default and is otherwise tested. This change adds explicit tests for 2.9 even if they are redundant in order to make future Ansible version updates easier and more mechanical (we don't need to remember to add 2.9 later when we change the default). This is our first version of Ansible where the value of job.ansible-version could be interpreted as an integer, so the configloader is updated to handle that possibility transparently, as it already does for floating point values. Change-Id: I694b979077d7944b4b365dbd8c72aba3f9807329
78 lines
3.3 KiB
YAML
78 lines
3.3 KiB
YAML
- hosts: controller
|
|
tasks:
|
|
- name: Set python path fact
|
|
set_fact:
|
|
# This value is used by Ansible to find the zuul.ansible code
|
|
# that Zuul's ansible plugins consume. It must be updated when
|
|
# the python version of the platform is changed.
|
|
python_path: "/usr/local/lib/python3.8/dist-packages"
|
|
|
|
- name: Run ansible that should succeed
|
|
command: >
|
|
/usr/lib/zuul/ansible/{{ zuul_ansible_version }}/bin/ansible-playbook
|
|
src/opendev.org/zuul/zuul/playbooks/zuul-stream/fixtures/test-stream.yaml
|
|
environment:
|
|
ZUUL_JOB_LOG_CONFIG: "{{ ansible_user_dir}}/logging.json"
|
|
ZUUL_JOBDIR: "{{ ansible_user_dir}}"
|
|
PYTHONPATH: "{{ python_path }}"
|
|
|
|
- name: Run ansible playbook that should fail
|
|
command: >
|
|
/usr/lib/zuul/ansible/{{ zuul_ansible_version }}/bin/ansible-playbook
|
|
src/opendev.org/zuul/zuul/playbooks/zuul-stream/fixtures/test-stream-failure.yaml
|
|
register: failed_results
|
|
failed_when: "failed_results.rc != 2"
|
|
environment:
|
|
ZUUL_JOB_LOG_CONFIG: "{{ ansible_user_dir}}/logging.json"
|
|
ZUUL_JOBDIR: "{{ ansible_user_dir}}"
|
|
PYTHONPATH: "{{ python_path }}"
|
|
|
|
- name: Validate output - setupvar
|
|
shell: |
|
|
egrep "^.*\| node1 \|\s+\"setupvar\": {" job-output.txt
|
|
egrep "^.*\| node2 \|\s+\"setupvar\": {" job-output.txt
|
|
|
|
- name: Validate output - shell task
|
|
shell: |
|
|
egrep "^.*\| node1 \| 1: lo:" job-output.txt
|
|
egrep "^.*\| node2 \| 1: lo:" job-output.txt
|
|
|
|
- name: Validate output - loop with items
|
|
shell: |
|
|
egrep "^.+\| node1 \| ok: Item: item1" job-output.txt
|
|
egrep "^.+\| node1 \| ok: Item: item2" job-output.txt
|
|
egrep "^.+\| node1 \| ok: Item: item3" job-output.txt
|
|
egrep "^.+\| node2 \| ok: Item: item1" job-output.txt
|
|
egrep "^.+\| node2 \| ok: Item: item2" job-output.txt
|
|
egrep "^.+\| node2 \| ok: Item: item3" job-output.txt
|
|
|
|
- name: Validate output - loop with complex items
|
|
shell: |
|
|
egrep "^.+\| node1 \| ok: Item: Runtime" job-output.txt
|
|
egrep "^.+\| node2 \| ok: Item: Runtime" job-output.txt
|
|
|
|
- name: Validate output - failed shell task
|
|
shell: |
|
|
egrep "^.+\| node1 \| Exception: Test module failure exception task" job-output.txt
|
|
egrep "^.+\| node2 \| Exception: Test module failure exception task" job-output.txt
|
|
|
|
- name: Validate output - item loop with exception
|
|
shell: |
|
|
egrep "^.+\| node1 \| Exception: Test module failure exception loop" job-output.txt
|
|
egrep "^.+\| node2 \| Exception: Test module failure exception loop" job-output.txt
|
|
|
|
- name: Validate output - failure shell task with exception
|
|
shell: |
|
|
egrep "^.+\| node1 \| Exception: Test module failure exception fail-task" job-output.txt
|
|
egrep "^.+\| node2 \| Exception: Test module failure exception fail-task" job-output.txt
|
|
|
|
- name: Validate output - failure item loop with exception
|
|
shell: |
|
|
egrep "^.+\| node1 \| Exception: Test module failure exception fail-loop" job-output.txt
|
|
egrep "^.+\| node2 \| Exception: Test module failure exception fail-loop" job-output.txt
|
|
|
|
- name: Validate output - binary data
|
|
shell: |
|
|
egrep "^.*\| node1 \| \\\\x80abc" job-output.txt
|
|
egrep "^.*\| node2 \| \\\\x80abc" job-output.txt
|