Hi all,
I’m trying to figure out a development strategy for my team and how we produce our Ansible output.
We are using Ansible Tower (v3.3.1 but moving to v3.4.1 shortly) and an instance of Github Enterprise to hold our repositories.
I am trying to come up with a workable way of keeping our playbooks and roles separate. My current process is to make one github repo per role, so that anyone on the team can use / contribute to them directly.
I then wished to create a repo that contains all the playbooks, and a roles/requirements.yml, into which we would append new roles to as and when they are needed by any of the playbooks.
This playbooks repo is then loaded into Tower as a project, giving us a single project to source our playbooks from when creating job templates.
Initially, I was hoping I could make sub-directories for the playbooks, so they have their own unique requirements.yml file to stop Tower needing to pull down everything, but it doesn’t appear to allow for this. Going with a top-level roles/requirements.yml is workable, but there is a problem I am yet to figure out how to resolve cleanly.
If I need to make an update to a role, perhaps a task needs changing, but the playbook repo is unaffected, I do not see a way of having Tower re-sync from github all the roles, unless I use the Delete on Update project setting. This bothers me because it seems inefficient having to remove all the local files and then download everything from git again, instead of just having git check what’s different in the repositories specified in the requirements file.
My questions would be:
- Is there a way to have a project trigger the git / ansible-galaxy check without using the Delete on Update option?
- Is there a better way of achieving the role / playbook split in Tower than I’ve envisioned above? Our current way is one project per similar set of playbooks, so doing a Delete on Update isn’t too big of an issue as we’re only re-syncing one set of roles and not the whole lot. This works, but it makes the Projects library start to get quite cluttered.