Ansible 101 – Episode 10 – Ansible Tower and AWX


    Jeff Geerling (geerlingguy) demonstrates Ansible Tower and AWX, and compares the two tools, following examples in chapter 11 of Ansible for DevOps.

    LEGO Saturn V:
    NASA ‘Worm’ T-shirt:

    Ansible for DevOps:

    Support Jeff on GitHub:
    Support Jeff on Patreon:


    00:00 – Start
    00:35 – Spaaaaaace!
    03:29 – Intro
    04:51 – Questions from last episode
    11:13 – Intro to Tower and AWX
    15:00 – How to install Tower or AWX
    21:28 – Running the Demo Job Template
    22:19 – Adding a playbook to Tower
    27:50 – Using Galaxy roles and collections
    29:58 – Add a credential to Tower
    33:21 – Add an inventory to Tower
    36:15 – Add a git project to Tower
    38:23 – Add a job template to Tower
    41:01 – Using Galaxy requirements in Tower
    44:20 – Failure to launch
    50:52 – Tower Dashboard and other parts
    54:51 – Jenkins section in book
    56:28 – Outtro
    58:54 – Someone fell upstairs


    Previous articleZabbix Tutorial for Beginners | Installation, Configuration, and Overview
    Next articleWhat is Ansible Roles? | Ansible Roles Explained | Role directory structure & creating a new Role.


    1. Apparently the installation method for AWX (compared to the one in the book) changed and that doesn't work anymore 🙁 Do you have a video or something on how to configure a proper K8s cluster with AWX on it, instead of the test one?

    2. I love AWX/tower and it API. But some things are just not possible.
      I have not found a way to query an inventory via the api and apply a limit to it. a simple question like:

      On what hosts of inventory X with group limit Y will this template run?

      Is not possible I think.
      CLI it would just be ansible-playbook –list-hosts -i X -l Y

    3. I think you're timelines on this are screwed – you have a whole section at 22:22 title "Adding playbook to Tower", and its just waffle about a github repo… I don't see much regarding tower, until after 30:00 :S .. But this has been very useful to give some grounding on usage, so thank you very mich 😀

    4. I do not understand what I am doing wrong, but when I execute my template it does not seem to try to pull the collections. I tried putting my requirements.yml file in a "collections" directory at the same level as my main.yml (top directory level). I have also put the requirements.yml next to the main.yml as well. Neither worked. I am using Ansible Tower 3.7.4 with Ansible 2.9.15. Do I need to include an actual anisble-galaxy command in my ansible script itself? Or should it find the collections by just having the the collections/requirements.yml?

    5. I have a Problem to run my Playbook, i will save the Config from a Cisco Switch. And i get this. [WARNING]: Could not match supplied host pattern, ignoring: SWITCHES
      PLAY [SWITCHES] **************************************************************
      skipping: no hosts matched And i don´t find the Problem. In Inventories i write the Name SWITCHES with GROUP hosts under host i call it from my Switch (variables hosts: and under the Hosts i Add the Host with Inventory SWITCHES. Thx for Help.

    6. How to porting the Ansible Galaxy collections to Ansible Tower perfectly ? Great sharing and thanks a lot.
      First, run
      #ansible-galaxy collection install devsec.hardening on Ansible Tower server successfully
      and then wrote an simple playbook (yml file) on Project of Ansible Tower platform.

      Finally, it shows error message as below when I launch it on Ansible Tower latest version 3.8.
      ERROR! the role 'devsec.hardening.os_hardening' was not found in devsec.hardening:ansible.legacy:/tmp/awx_75_ynkccycw/project/roles:/tmp/awx_75_ynkccycw/requirements_roles:/var/lib/awx/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/tmp/awx_75_ynkccycw/project……

      The offending line appears to be:

      20 roles:
      21 – devsec.hardening.os_hardening
      22 ^ here