Hi,
we have several playbooks and roles in our project so I try to organize them in that way:
\---deployment
\---trunk
| ansible.cfg
| app1.yml
| ....yml
| app[N].yml
+---files
+---filter_plugins
+---group_vars
+---library
+---playbooks
| +---provisioning
| | | binaryBuild.yml
| | | root.yml
| | | site.yml
| | | user.yml
| | +---roles
| | | test-java.yml
| | | +---java
we put the ansible.cfg to the root of our project (trunk) to keep all settings in a central place, so whenever somebody checks out that project it should be executable.
Now, when invoking
ansible-playbook -i /path/to/inventory/hosts playbooks/provisioning/site.yml
the execution faills because of missing roles, filter_plugins and so on. Ansible tries to load those relative to the playbook - and not relative to the current directory!
Only workaround I found is to add a list of settings to the ansible.cfg file:
roles_path = roles: ../roles: ../../roles
filter_plugins = filter_plugins:../filter_plugins:../../filter_plugins:~/.ansible/plugins/filter_plugins/:/usr/share/ansible_plugins/filter_plugins
Using ${ANSIBLE_HOME} in the ansible.cfg to have fixed path also did not work for me.
=> What is the "best practice" to organize real-life projects, containing a huge list of playbooks?
=> Also, where do people put their "test playbooks", for integration testing of roles ?
I dont want a solution based on
* ansible.cfg outside the project ( HOME directory or any other user dependant place)
* symlinks
I couldn´t find any hint concerning "test playbooks" and "organizing modules" in the documentation.
Thanx for any advice,
Torsten