Python 2.7 (distro package) and 3.6 (pyenv managed) jobs run on Ubuntu 22.04. More recent Pythons (distro or Github provided) run on 24.04. fixes #1256 Ansible tasks that run locally (e.g. `connection: local`, `delegate_to: localhost`) must now specify their `ansible_python_interpreter`, typically as `{{ ansible_playbook_python }}`; otherwise the system Python on the controller (e.g. `/usr/bin/python`) is likely to be used and this is often outside the version range supported by the Ansible verison under test. If this occurs then the symptom is often a failure to import a builtin from `ansible.module_utils.six.moves`, e.g. ``` fatal: [target-centos6-1]: FAILED! => changed=true cmd: - ansible - -m - shell - -c - local - -a - whoami - -i - /tmp/mitogen_ci_ansibled3llejls/hosts - test-targets delta: '0:00:02.076385' end: '2025-04-17 17:27:02.561500' msg: non-zero return code rc: 8 start: '2025-04-17 17:27:00.485115' stderr: |- stderr_lines: <omitted> stdout: |- An exception occurred during task execution. To see the full traceback, use -vvv. The error was: from ansible.module_utils.six.moves import map, reduce, shlex_quote ``` |
8 months ago | |
|---|---|---|
| .. | ||
| bench | 8 months ago | |
| files | 2 years ago | |
| hosts | 10 months ago | |
| integration | 8 months ago | |
| lib | 1 year ago | |
| regression | 8 months ago | |
| setup | 2 years ago | |
| soak | 2 years ago | |
| templates | 1 year ago | |
| tests | 11 months ago | |
| .gitignore | 6 years ago | |
| Makefile | 7 years ago | |
| README.md | 4 years ago | |
| all.yml | 4 years ago | |
| ansible.cfg | 11 months ago | |
| ara_env.py | 7 years ago | |
| compare_output_test.py | 7 years ago | |
| mitogen_ansible_playbook.py | 4 years ago | |
| requirements.txt | 12 months ago | |
| run_ansible_playbook.py | 3 years ago | |
README.md
tests/ansible Directory
This is an an organically growing collection of integration and regression tests used for development and end-user bug reports.
It will be tidied up over time, meanwhile, the playbooks here are a useful demonstrator for what does and doesn't work.
Preparation
run_ansible_playbook.py
This is necessary to set some environment variables used by future tests, as there appears to be no better way to inject them into the top-level process environment before the Mitogen connection process forks.
Running Everything
ANSIBLE_STRATEGY=mitogen_linear ./run_ansible_playbook.py all.yml
hosts/ and common-hosts
To support running the tests against a dev machine that has the requisite user accounts, the the default inventory is a directory containing a 'localhost' file that defines 'localhost' to be named 'target' in Ansible inventory, and a symlink to 'common-hosts', which defines additional targets that all derive from 'target'.
This allows ansible_tests.sh to reuse the common-hosts definitions while
replacing localhost as the test target by creating a new directory that
similarly symlinks in common-hosts.
There may be a better solution for this, but it works fine for now.