Ansible is a software tool that offers simple but powerful automation for cross-platform operating systems and computer support. It is mainly planned for IT professionals, who use it for application deployment, updates on workstations and servers, cloud provisioning, configuration management, intra-service orchestration, and nearly everything a systems administrator does on a weekly or daily basis. Ansible doesn't have any dependency such as client agent software and has no extra security infrastructure, so it's easy to deploy and implement. The AWX allows you to manage Ansible playbooks, inventories, and schedule jobs to run using the web interface.
The Ansible AWX Project is an open source community project, easy-to-use UI and dashboard and REST API for Ansible, sponsored by Red Hat, that allows users to have better control their Ansible project use in IT environments. AWX is the upstream project from which the Red Hat Ansible Tower offering is finally derived.
To start ansible AWX tower installation I have setup my Ubuntu Server 20.04, the steps shown here also applicable on other ubuntu version 18.04. I am running my virtual machine with lowest minimum hardware configuration with 1 vCPU, 1 GB RAM, 20 GB Disk.
Make sure you have sudo access (root access), First update and upgrade your operating system and reboot the system.
su - sudo apt update && sudo apt -y upgrade sudo reboot
Install additional packages python-setuptools and python3-pip to install latest version of Ansible using pip3. Once Ansible is installed test it with sample one-liner ansible adhoc command script.
To install Ansible on Redhat, CentOS use article How to install Ansible on Linux for vSphere configuration.
sudo apt install python-setuptools -y sudo apt install python3-pip -y sudo pip3 install ansible ansible localhost -m ping
Ansible AWX components are installed as a container, for this I will use docker engine to host containers. Install docker-compose using pip3, Then install packages docker and docker.io., Test the version of docker-compose and docker. Give access to docker group for current logged in user.
To install docker on RedHat or CentOS follow article How to install Docker on Linux.
sudo pip3 install docker-compose sudo apt install docker docker.io -y docker-compose version docker version sudo usermod -aG docker $USER
Next install additional packages git, vim and pwgen.
sudo apt install git vim pwgen -y
Clone (download) Ansible AWX source code/ scripts from github.com. Change the directory to axw/installer. Generate new secret key with pwgen, I will use this key later. Edit inventory file with vim kept under awx/installer.
sudo git clone https://github.com/ansible/awx.git ls cd awx/installer pwgen -N 1 -s 30 vim inventory
Modify admin_password and secret_key (earlier generated with pwgen). Remember admin_password it will be used later on the awx web interface to login. Below is how my template's minimal version looks like.
cat inventory | grep -v '^#' | sed '/^\s*#/d;/^\s*$/d'
Implement the yml playbook, it takes some time to download docker container images and set them up accordingly. In the last check the deployied containers with docker ps command.
Ansible AWX installation error Cannot have both the docker-py and docker python modules
Ansible AWX installation error docker-compose run --rm --service-ports task awx-manage migrate --no-input
docker: Got permission denied while trying to connect to the Docker daemon socket
ansible-playbook -i inventory install.yml docker ps
Verify the Ansible awx url in the browser, for default username use admin and password use admin_password mentioned earlier in the template. Dashboard looks like below.
http://<Ansible AWX FQDN or IP>/#/login
Useful Articles
Getting started Ansible AWX tower for IT automation run first playbook
Ansible for VMwary Using vmware_vm_inventory dynamic inventory plugin
Ansible selectattr The error was TemplateRuntimeError no test named 'equalto'
ansible create an array with set_fact
Ansible get information from esxi advanced settings nested dictionary with unique keynames