3

Ansible Tower 3.3.0 Currently we are using Ansible 2.4.2, need to upgrade to 2.5.x, to take advantage of new features, without breaking existing jobs that have been tested and currently working. Would like to be able to specify the Ansible version, for running jobs, for certification, and if they pass, be promoted to use the new version, and if they fail, continue to use their existing release.

Our playbooks run on network devices, RHEL7, VMware, Openstack, and several flavors of windows.

We had previously upgraded to 2.5.0 and encountered failures with win_copy, win_template and a few other modules, which forced us to roll back to our previous working release.

Later, we will want to patch/update various components including Tower itself, so any ideas for doing these activities will also be appreciated.

Am0s
  • 31

2 Answers2

0

If you are looking to dictate the version that jobs run, you handle that with your execution images. The version of ansible that you run is dictated by the container that is actually running it.

If you go into your execution images and set one up to pull a specific tag for awx-ee, you will get the ansible version that it has.

I could swear I once saw a version chart for awx vs ansible versions, but I cannot for the life of me find it. You might just have to pull a few images, and run ansible --version inside of them to get your bearings.

Anyway, you can then designate which templates are to use the specific version, and which should use a different version. I recommend a good naming convention to save yourself some headache. Hope this helps.

0

Ansible moves fast enough where any major version upgrade has a chance to break non-trivial playbooks. And given the 4 months or so release cycle, can only hold back for a year or so before your release becomes end of life.

You could branch the version control of your playbooks like you would for software development. Fork a stable 2.4 branch for maintenance. Port to the current version of Ansible in a master or trunk main development branch.

Maintain some kind of dev, test, and production environment of what you are deploying. As you would for other changes, deploy new Ansible versions in dev test stage first.

I don't know how you would test different Ansible versions in Tower. I'm pretty sure that would mean a separate test deployment of Tower.

John Mahowald
  • 36,071