Cómo instalar Ansible AWX en CentOS 8

AWX significa «Ansible Web eXecutable» y es un proyecto gratuito y de código abierto que te permite gestionar y controlar tu proyecto Ansible fácilmente. Proporciona una interfaz de usuario basada en la web y un motor de tareas construido sobre Ansible. Proporciona una potente API REST y te permite gestionar o sincronizar el inventario con otras fuentes en la nube, controlar el acceso e integrarse con LDAP.

En este tutorial, te mostraremos cómo instalar Ansible AWX con Docker en CentOS 8.

Requisitos previos

  • Un servidor que ejecute CentOS 8 con un mínimo de 4 GB de RAM.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

Antes de empezar, necesitarás instalar el repositorio EPEL en tu sistema. Puedes instalarlo con el siguiente comando:

dnf install epel-release -y

A continuación, tendrás que instalar algunos paquetes adicionales necesarios para ejecutar AWX en tu sistema. Puedes instalarlos todos con el siguiente comando:

dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar Docker y Docker Compose

A continuación, tendrás que instalar Docker para ejecutar AWX dentro del contenedor Docker. Por defecto, la última versión de Docker no está disponible en el repositorio por defecto de CentOS 8. Así que tendrás que añadir el repositorio de Docker en tu sistema. Puedes añadir el repositorio Docker con el siguiente comando:

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Una vez añadido, instala la última versión estable de Docker con el siguiente comando:

dnf install docker-ce-3:18.09.1-3.el7 -y

Una vez instalado Docker, comprueba la versión instalada de Docker con el siguiente comando:

docker --version

Deberías obtener la siguiente salida:

Docker version 19.03.7, build 7141c199a2

A continuación, inicia el servicio de Docker y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl start docker
 systemctl enable docker

Puedes verificar el estado del servicio Docker con el siguiente comando:

systemctl status docker

Deberías obtener la siguiente salida:

? docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-03-11 02:36:04 EDT; 23min ago
     Docs: https://docs.docker.com
 Main PID: 5882 (dockerd)
    Tasks: 101
   Memory: 2.6G
   CGroup: /system.slice/docker.service
           ??5882 /usr/bin/dockerd -H fd://
           ??5899 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
           ??8815 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/4b91575d64b1b>
           ??8847 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/0f36c9784f748>
           ??8894 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.5 -container-port 8052
           ??8899 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/47300ec1c26ff>
           ??8923 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/9827b9831fa5b>
           ??9631 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>

A continuación, instala el Docker compose con el siguiente comando:

pip3 install docker-compose

Una vez instalado, verifica la versión de Docker compose utilizando el siguiente comando:

docker-compose --version

Deberías ver la siguiente salida:

docker-compose version 1.25.4, build unknown

Por último, ejecuta el siguiente comando para establecer que el comando python utilice python 3:

alternatives --set python /usr/bin/python3

Instalar Ansible AWX

En primer lugar, descarga la última versión de Ansible AWX desde el repositorio Git Hub utilizando el siguiente comando:

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

A continuación, genera una clave secreta para el cifrado del archivo de inventario con el siguiente comando:

openssl rand -base64 30

Deberías obtener la siguiente salida:

R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp

Nota: Recuerda el secreto anterior, tendrás que pegarlo en el archivo de inventario.

A continuación, cambia el directorio a awx/installer/ y edita el archivo de inventario:

cd awx/installer/
 nano inventory

Cambia las siguientes líneas:

[all:vars]
dockerhub_base=ansible
awx_task_hostname=awx
awx_web_hostname=awxweb
postgres_data_dir="/var/lib/pgdocker"
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose"
pg_username=awx
pg_password=awxpass
pg_database=awx
pg_port=5432
pg_admin_password=password
rabbitmq_password=awxpass
rabbitmq_erlang_cookie=cookiemonster
admin_user=admin
admin_password=password
create_preload_data=True
secret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects

Guarda y cierra el archivo cuando hayas terminado. A continuación, crea un directorio para Postgres:

mkdir /var/lib/pgdocker

Por último, ejecuta el siguiente comando para instalar AWX:

ansible-playbook -i inventory install.yml

Una vez que la instalación se haya completado con éxito, deberías obtener la siguiente salida:

skipping: [localhost]

TASK [local_docker : Load web image] **********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Load task image] *********************************************************************************************************
skipping: [localhost]

TASK [local_docker : Set full image path for local install] ***********************************************************************************
skipping: [localhost]

TASK [local_docker : Set DockerHub Image Paths] ***********************************************************************************************
ok: [localhost]

TASK [local_docker : Create ~/.awx/awxcompose directory] **************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item=environment.sh)
changed: [localhost] => (item=credentials.py)
changed: [localhost] => (item=docker-compose.yml)
changed: [localhost] => (item=nginx.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=14   changed=6    unreachable=0    failed=0    skipped=95   rescued=0    ignored=0   

El comando anterior creará e iniciará todos los contenedores Docker necesarios para AWX. Puedes verificar los contenedores en ejecución con el siguiente comando:

docker ps

Deberías ver la siguiente salida:

CONTAINER ID        IMAGE                        COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
4b91575d64b1        ansible/awx_task:9.2.0       "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   8052/tcp                                              awx_task
9827b9831fa5        ansible/awx_web:9.2.0        "/tini -- /bin/sh -c…"   About a minute ago   Up About a minute   0.0.0.0:80->8052/tcp                                  awx_web
47300ec1c26f        postgres:10                  "docker-entrypoint.s…"   About a minute ago   Up About a minute   5432/tcp                                              awx_postgres
166b153faa27        ansible/awx_rabbitmq:3.7.4   "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp   awx_rabbitmq
0f36c9784f74        memcached:alpine             "docker-entrypoint.s…"   About a minute ago   Up About a minute   11211/tcp                                             awx_memcached

Configurar SELinux y Firewall

Por defecto, SELinux está activado en CentOS 8. Se recomienda desactivarlo para que AWX funcione en el entorno Docker. Puedes desactivarlo editando el siguiente archivo:

nano /etc/sysconfig/selinux

Busca la siguiente línea:

SELINUX=enforcing

Y, sustitúyela por la siguiente línea:

SELINUX=disabled

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia tu sistema para aplicar los cambios. A continuación, tendrás que permitir el servicio http y https a través de firewalld. Puedes permitirlos con el siguiente comando:

firewall-cmd --zone=public --add-masquerade --permanent
 firewall-cmd --permanent --add-service=http
 firewall-cmd --permanent --add-service=https

A continuación, reinicia el servicio firewalld para aplicar los cambios:

firewall-cmd --reload

Accede a la interfaz web de AWX

Ahora, abre tu navegador web y escribe la URL http://your-server-ip. Serás redirigido a la página de inicio de sesión de AWX:

Inicio de sesión de Ansible AWX

Proporciona tu nombre de usuario y contraseña de administrador que has definido en el archivo de inventario y haz clic en el botón INICIAR S ESIÓN. Deberías ver el panel de control por defecto de AWX en la siguiente página:

Interfaz Ansible AWX

Enhorabuena, has instalado con éxito AWX con Docker en CentOS 8.

También te podría gustar...