#!/usr/bin/env bash set -eux # Standard ping module ansible-playbook modules_test.yml -i ../../inventory -v "$@" # Library path ping module ANSIBLE_LIBRARY=lib_with_extension ansible-playbook modules_test_envvar.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_no_extension ansible-playbook modules_test_envvar.yml -i ../../inventory -v "$@" # ping module from role ANSIBLE_ROLES_PATH=roles_with_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" ANSIBLE_ROLES_PATH=roles_no_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" # ping module from role when there's a library path module too ANSIBLE_LIBRARY=lib_no_extension ANSIBLE_ROLES_PATH=roles_with_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_with_extension ANSIBLE_ROLES_PATH=roles_with_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_no_extension ANSIBLE_ROLES_PATH=roles_no_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_with_extension ANSIBLE_ROLES_PATH=roles_no_extension ansible-playbook modules_test_role.yml -i ../../inventory -v "$@" # ping module in multiple roles: Note that this will use the first module found # which is the current way things work but may not be the best way ANSIBLE_LIBRARY=lib_no_extension ANSIBLE_ROLES_PATH=multiple_roles ansible-playbook modules_test_multiple_roles.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_with_extension ANSIBLE_ROLES_PATH=multiple_roles ansible-playbook modules_test_multiple_roles.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_no_extension ANSIBLE_ROLES_PATH=multiple_roles ansible-playbook modules_test_multiple_roles.yml -i ../../inventory -v "$@" ANSIBLE_LIBRARY=lib_with_extension ANSIBLE_ROLES_PATH=multiple_roles ansible-playbook modules_test_multiple_roles.yml -i ../../inventory -v "$@" # And prove that with multiple roles, it's the order the roles are listed in the play that matters ANSIBLE_LIBRARY=lib_with_extension ANSIBLE_ROLES_PATH=multiple_roles ansible-playbook modules_test_multiple_roles_reverse_order.yml -i ../../inventory -v "$@" # Tests for MODULE_IGNORE_EXTS. # # Very similar to two tests above, but adds a check to test extension # precedence. Separate from the above playbooks because we *only* care about # extensions here and 'a' will not exist when the above playbooks run with # non-extension library/role paths. There is also no way to guarantee that # these tests will be useful due to how the pluginloader seems to work. It uses # os.listdir which returns things in an arbitrary order (likely dependent on # filesystem). If it happens to return 'a.py' on the test node before it # returns 'a.ini', then this test is pointless anyway because there's no chance # that 'a.ini' would ever have run regardless of what MODULE_IGNORE_EXTS is set # to. The hope is that we test across enough systems that one would fail this # test if the MODULE_IGNORE_EXTS broke, but there is no guarantee. This would # perhaps be better as a mocked unit test because of this but would require # a fair bit of work to be feasible as none of that loader logic is tested at # all right now. ANSIBLE_LIBRARY=lib_with_extension ansible-playbook modules_test_envvar_ext.yml -i ../../inventory -v "$@" ANSIBLE_ROLES_PATH=roles_with_extension ansible-playbook modules_test_role_ext.yml -i ../../inventory -v "$@"