Como instalar o Ansible AWX no Ubuntu Bionic

O Ansible AWX, surgiu com objetivo de facilitar o gerenciamento dos projects criados no ansible, uma vez que somente com o ansible não era possível obter logs das tasks executadas, criação schedules e etc. Sendo assim, a Red Hat decidiu distribuir para a comunidade AWX, considerado um upstream do Tower. O AWX possui um dashboard amigável, onde é possível criar projects, teams, users, gerenciar os jobs, notificação, schedules e etc.

Com esse breve resumo, mostraremos os procedimentos para instalação do Ansible AWX no Ubuntu Bionic em containers Docker.

Pré-requisitos

  • Ansible Version 2.4+
  • Docker e docker-py
  • GNU MAKE,
  • Git
  • Node 8.x e NPM 6.x.

Instalando o Docker e Docker compose

Em primeiro lugar, é necessário fazer a instalação dos pacotes que permite o apt usar repositório https:

sudo apt install \
apt-transport-https \
ca-certificates \
curl gnupg-agent\
software-properties-common -y

Em seguida, adicione GPG Key Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Habilite o repositório stable:

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Por último, instale o docker e docker-compose:

sudo apt install docker-ce docker-ce-cli containerd.io -y

Instalando o python-pip e python docker

Para fazer a instalação do python-pip e docker-py execute os comandos abaixo:

sudo apt install python-pip -y
sudo pip install docker

Instalando o node NPM

Para fazer a instalação do NPM execute os comandos abaixo:

sudo apt install nodejs npm -y
sudo npm install npm --global

Instalando o Ansible AWX

Crie um diretório no /opt com o nome ansible-awx e faça o git clone nele:

sudo mkdir /opt/ansible-awx;cd /opt/ansible-awx

Em seguida, execute o git clone dentro do /opt/ansible-awx:

sudo git clone https://github.com/ansible/awx.git

Dentro do diretório, execute o comando cd para acessar o diretório installer:

cd /opt/ansible-awx/awx/installer

Para ter acesso ao docker-compose e poder executar restart dos containers é necessário fazer algumas alterações. Em primeiro lugar, dentro do installe acesse o arquivo inventory e descomente o use_docker_compose=true. Conforme o exemplo abaixo:

sudo vim /opt/ansible-awx/awx/installer/inventory
# Docker Compose Install
use_docker_compose=true
# The docker_compose.yml file will be created in this directory
# The name of the directory (here "awx") will be the prefix of the docker containers
docker_compose_dir=/var/lib/awx

OBs: O diretório onde será disponibilizado o docker-compose será no /var/lib/awx, esse parâmetro pode ser alterado.

Outra maneira de obter o docker-compose é declarando no ansible-playbook com o parâmetro “-e” , conforme no exemplo abaixo:

sudo ansible-playbook -e use_docker_compose=true -i inventory install.yml

Aguarde alguns minutos para o ansible terminar a execução do playbook.

Ao término da execução, será criado 5 containers dockers, para visualizá-los execute o comando docker container ps:

sudo docker container ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b47c323bec3 ansible/awx_task:3.0.0 "/tini -- /bin/sh -c…" 14 minutes ago Up 13 minutes 8052/tcp awx_task
b6909f8353cd ansible/awx_web:3.0.0 "/tini -- /bin/sh -c…" 14 minutes ago Up 14 minutes 0.0.0.0:80->8052/tcp awx_web
59cfa4a76b54 memcached:alpine "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 11211/tcp memcached
b4ac74cd72ff ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s…" 17 minutes ago Up 17 minutes 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp rabbitmq
fb1f9d3d0fd9 postgres:9.6 "docker-entrypoint.s…" 18 minutes ago Up 18 minutes 5432/tcp postgres

E o docker-compose será disponibilizado no /var/lib/awx:

 ls -lh /var/lib/awx
-rw-r--r-- 1 root root 1.9K Feb  6 18:34 docker-compose.yml

Para acompanhar o setup de configuração, migração da database e logs execute docker logs -f awx_task:

sudo docker logs -f awx_task

A saída do comando será igual a esta:

....
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK

Acessando o AWX

Ao término acesse via browser o AWX através a URL: http://localhost, com o usuário admin e senha password.

Em seguida você será redirecionada para a tela abaixo:

Criamos um script para automatizar a instalação do Ansible AWX no ubuntu, execute o comando abaixo para fazer o download:

wget https://raw.githubusercontent.com/bezarsnba/scripts/master/install-ansibleawx.sh
chmod +x install-ansibleawx.sh 
sudo ./install-ansibleawx.sh

 

Fontes:
https://docs.docker.com/install/linux/docker-ce/ubuntu/
http://blog.onxsolutions.net/como-instalar-o-ansible-no-ubuntu-bionic-18-04/
https://github.com/ansible/awx/blob/devel/INSTALL.md#docker-or-docker-compose
https://www.ansible.com/products/awx-project/faq

About: Bezaleel Ramos

Fundador da empresa Onx Solutions em Goiânia. Formado em Tecnologia em Redes de Computadores pela Universidade Nove de Julho em São Paulo. Possui certificações LPIC-1,LPIC-2, ZABBIX Certified Specialist,Novell Certified Linux Administrator (CLA) e Linux Administrator for SUSE Linux Enterprise.