Ansible is a free and open-source configuration management and automation tool used to manage hundreds and thousands of servers from a central location.
Ansible AWX is an open-source project, sponsored by Red Hat, that helps you control Ansible in IT environments. It provides a web-based interface REST API and task engine for Ansible. You can manage playbooks, secrets, inventories, and cron jobs using the AWX web-based interface.
In this tutorial, we will show you how to install Ansible AWX with Docker on Debian 10.
Step 1 – Install Docker
First, you will need to install the Docker and Docker compose in your system. By default, the latest version of Docker is not available in the Debian standard repository, so you will need to add the Docker repository to your system.
Install the required dependencies with the following command:
apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
Next, download and add the Docker GPG key with the following command:
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
Next, add the Docker repository with the following command:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Next, update the Docker repository and install Docker with Docker compose using the following command:
apt-get update -y apt-get install docker-ce docker-compose -y
Once both packages are installed, verify the installed version of Docker with the following command:
docker --version
You should get the following output:
Docker version 19.03.13, build 4484c46d9d
Step 2 – Install Ansible
AWX is built on the top of the Ansible. so you will need to install Ansible in your system.
First, add the Ansible repository with the following command:
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu bionic main" | tee /etc/apt/sources.list.d/ansible.list
Next, update the repository and install the Ansible with the following command:
apt-get update -y apt-get install ansible -y
Once the Ansible is installed, verify the installed version of Ansible using the following command:
ansible --version
You should get the following output:
ansible 2.9.13 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.16 (default, Oct 10 2019, 22:02:15) [GCC 8.3.0]
Step 3 – Install Nodejs and Python Library
First, install the Node.js, NPM and Git with the following command:
apt-get install nodejs npm git -y npm install npm --global
Next, install the Python module for Docker and other required dependencies with the following command:
apt-get install python3-pip pwgen python3-docker -y pip3 install requests==2.14.2
Next, update the default Python version with the following command:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 update-alternatives --install /usr/bin/python python /usr/bin/python3 2
Next, you will need to install Docker compose Python module in your system.
First, check the installed version of Docker compose with the following command:
docker-compose version
You should get the following output:
docker-compose version 1.21.0, build unknown docker-py version: 3.4.1 CPython version: 3.7.3 OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
Next, installed the matching version of Docker compose Python module with the following command:
pip3 install docker-compose==1.21.0
Step 4 – Install Ansible AWX
First, download the latest version of AWX source from the Git repository using the following command:
git clone --depth 50 https://github.com/ansible/awx.git
Once downloaded, change the directory to awx and generate the secrete key with the following command:
cd awx/installer/ pwgen -N 1 -s 30
You should get the following output:
4NaNkNcMBOj4Jxp4fWi91mymuW9TbR
Next, create a new inventory file with the following command:
nano inventory
Add the following lines including, admin user, password, secret key, port, and hostname as shown below:
dockerhub_base=ansible awx_task_hostname=awx awx_web_hostname=awxweb postgres_data_dir=/tmp/pgdocker host_port=80 host_port_ssl=443 docker_compose_dir=/tmp/awxcompose pg_username=awx pg_password=awxpass pg_database=awx pg_port=5432 admin_user=admin admin_password=adminpassword create_preload_data=True secret_key=2fCkx2K5GnIjBz4OterhOC3ey0WPdj
Save and close the file when you are finished.
Next, run the playbook to install the Ansible AWX with the following command:
ansible-playbook -i inventory install.yml
Once the Ansible AWX has been installed, you should get the following output:
TASK [local_docker : Create Docker Compose Configuration] ************************************************************************************* changed: [localhost] => (item={u'mode': u'0600', u'file': u'environment.sh'}) changed: [localhost] => (item={u'mode': u'0600', u'file': u'credentials.py'}) changed: [localhost] => (item={u'mode': u'0600', u'file': u'docker-compose.yml'}) changed: [localhost] => (item={u'mode': u'0600', u'file': u'nginx.conf'}) changed: [localhost] => (item={u'mode': u'0664', u'file': u'redis.conf'}) TASK [local_docker : Render SECRET_KEY file] ************************************************************************************************** changed: [localhost] TASK [local_docker : Start the containers] **************************************************************************************************** changed: [localhost] TASK [local_docker : Update CA trust in awx_web container] ************************************************************************************ changed: [localhost] TASK [local_docker : Update CA trust in awx_task container] *********************************************************************************** changed: [localhost] PLAY RECAP ************************************************************************************************************************************ localhost : ok=15 changed=7 unreachable=0 failed=0 skipped=86 rescued=0 ignored=0
Next, you can verify the list of running containers using the following command:
docker ps
You should get the following output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 167d008ee26f ansible/awx:14.1.0 "/usr/bin/tini -- /u…" About a minute ago Up About a minute 8052/tcp awx_task 260c028bf07d ansible/awx:14.1.0 "/usr/bin/tini -- /b…" About a minute ago Up About a minute 0.0.0.0:80->8052/tcp awx_web e15d5ee1c940 postgres:10 "docker-entrypoint.s…" About a minute ago Up About a minute 5432/tcp awx_postgres 6472ee690066 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp awx_redis
Step 5 – Access Ansible AWX Dashboard
Now, open your web browser and access the Ansible AWX dashboard using the URL http://your-server-ip. You will be redirected to the AWX login page:
Provide your admin username and password that you have defined in the inventory file and click on the SIGN IN button. You should see the Ansible AWX dashboard on the following page:
Conclusion
Congratulations! You have successfully installed Ansible AWX with Docker on Debian 10. You can now easily control Ansible inventory, secrets, playbooks, and more from the AWX dashboard; try it now on VPS Hosting from Atlantic.Net!