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.

2 Answers 2

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.

3
  • Tower doesn't know anything about test phases. It's only production, as far as I can tell. There is a concept of virtual environments, one for tower, one for Ansible, but no docs that I can find to support more than one Ansible at a time, or the concept of dev, test, qa, stage and prod for tower workflows. Tower comes with a price tag per x number of nodes, where Ansible itself is free. We're still determining how to support multiple releases, within tower. For Ansible itself, it's easy. I need a tower answer. Commented Jun 11, 2018 at 16:36
  • I have not used Tower or AWX. All I can think of is branch the playbook and try some ansible-playbook runs with the new version. Commented Jun 13, 2018 at 12:22
  • The answer does not at all match the question asked. Commented Nov 22, 2019 at 10:47
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.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.