I’m evaluating Ansible Tower as a way to manage configuration and deployment of applications.
I’ve built a small application with an interface to the REST API to manage some of the more complicated steps in the deployment process (for example, logging a ‘build’ in the system upon a successful Jenkins job, and tracking its deployment to various environments), and there is one piece of the puzzle I can’t figure out.
We’re using playbooks and templates to manage config files on servers in what seems to be a pretty standard way, with a ‘project’ set up for a branch of our playbooks git repository, but it doesn’t look like there is a way of picking a particular git revision when executing a job. It would be really nice to, when triggering a job template, tell it which git commit (or tag) we want it to use, since config changes associated with a particular build can best be tracked by git commit, and not simply whatever’s been pushed to a particular branch. One reason for this is, lets say we have changes to group_vars/prod that need to go out on the next push. If those changes were simply pushed to the prod branch of our repository in anticipation of the push, any new production servers brought up before the actual deployment process happened (that is, servers that would have the playbook executed on them between the commit and the actual deployment) would be erroneously getting the new settings. And I’m hoping to avoid complicating the otherwise push-button deployment process with a merge-to-a-git-branch step.
Has anyone here dealt with this sort of use case? Is there a way around it?
tl;dr: Can I choose a specific scm tag or revision a job will run its playbooks from in Ansible Tower?