Cómo instalar Ansible AWX en Debian 11

Ansible AWX es una aplicación web gratuita y de código abierto patrocinada por Red Hat que te permite gestionar los inventarios y playbooks de Ansible. Proporciona una interfaz basada en web que hace más cómodo el uso de Ansible en un entorno informático. También proporciona una API REST que te ayuda a controlar el acceso, y a gestionar gráficamente o sincronizar el inventario con una amplia variedad de fuentes en la nube.

Este tutorial te mostrará cómo instalar el software Ansible AWX en Debian 11.

Requisitos previos

  • Un servidor que ejecute Debian 11.
  • Una contraseña de root configurada en el servidor.

Añadir el repositorio de Ansible

El paquete Ansible no está incluido por defecto en el repositorio de Debian 11. Así que tendrás que añadir el repositorio de Ansible en tu servidor.

En primer lugar, instala todas las dependencias necesarias utilizando el siguiente comando:

apt-get install apt-transport-https ca-certificates software-properties-common unzip gnupg2 curl git -y

Una vez instaladas todas las dependencias, edita el archivo sources.list y añade el repositorio de Ansible:

nano /etc/apt/sources.list

Añade la siguiente línea:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Guarda y cierra el archivo y luego añade la clave GPG con el siguiente comando:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Obtendrás la siguiente salida:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.47eo2M3Kib/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

A continuación, actualiza la caché del repositorio con el siguiente comando:

apt-get update -y

Instalar Ansible en Debian 11

Ahora, ejecuta el siguiente comando para instalar Ansible utilizando el siguiente comando:

apt-get install ansible -y

Una vez instalado Ansible, verifica la versión de Ansible con el siguiente comando:

ansible --version

Obtendrás la siguiente salida:

ansible [core 2.11.6] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 2.11.3
  libyaml = True

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Docker CE

Por defecto, la última versión de Docker CE no está incluida en el repositorio por defecto de Debian 11. Así que tendrás que añadirla al APT.

En primer lugar, descarga y añade la clave GPG de Docker con el siguiente comando:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

A continuación, añade el repositorio de Docker CE a la APT con el siguiente comando:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

A continuación, actualiza el repositorio e instala Docker CE con el siguiente comando:

apt-get update -y
apt-get install docker-ce -y

Una vez completada la instalación, verifica el estado del Docker con el siguiente comando:

systemctl status docker

Obtendrás la siguiente salida:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-11-01 04:59:11 UTC; 26min ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 5066 (dockerd)
      Tasks: 32
     Memory: 1.0G
        CPU: 1min 57.723s
     CGroup: /system.slice/docker.service
             ?? 5066 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ??21970 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 8052
             ??21994 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.2 -container-port 8052

Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756163493Z" level=info msg="Docker daemon" commit=e2f740d graphdriver(s)=ove>
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756303194Z" level=info msg="Daemon has completed initialization"
Nov 01 04:59:11 debian11 systemd[1]: Started Docker Application Container Engine.
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.796631663Z" level=info msg="API listen on /run/docker.sock"

Para verificar la versión de Docker, ejecuta el siguiente comando:

docker -v

Deberías ver la siguiente salida:

Docker version 20.10.10, build b485636

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Docker Compose y otras dependencias

En primer lugar, descarga el binario de Docker Compose del repositorio Git utilizando el siguiente comando:

wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64

A continuación, mueve el binario descargado al directorio /usr/bin/:

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

A continuación, establece el permiso de ejecución para el binario docker-compose:

chmod +x /usr/bin/docker-compose

A continuación, verifica la versión de Docker Compose utilizando el siguiente comando:

docker-compose version

Obtendrás el siguiente resultado:

docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

A continuación, instala Node.js y NPM con el siguiente comando:

apt-get install nodejs npm -y
npm install npm --global

A continuación, instala el PIP y otras dependencias utilizando el siguiente comando:

apt-get install python3-pip git pwgen -y

A continuación, instala el módulo Python para Docker Compose con el siguiente comando:

pip3 install docker-compose==1.29.0

Cuando hayas terminado, puedes pasar al siguiente paso.

Instalar Ansible AWX

En primer lugar, descarga Ansible AWX del repositorio Git Hub utilizando el siguiente comando:

wget https://github.com/ansible/awx/archive/17.1.0.zip

Una vez finalizada la descarga, descomprime el archivo descargado con el siguiente comando:

unzip 17.1.0.zip

A continuación, cambia el directorio al extraído y genera una clave secreta utilizando el siguiente comando:

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

Obtendrás el siguiente resultado:

dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

A continuación, edita el archivo de inventario y define tu clave secreta, nombre de usuario y contraseña de administrador:

nano inventory

Cambia las siguientes líneas:

admin_user=admin
admin_password=securepassword
secret_key=dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

Guarda y cierra el archivo y ejecuta el playbook de Ansible para instalar Ansible AWX:

ansible-playbook -i inventory install.yml

Una vez instalado el Ansible AWX, obtendrás el siguiente resultado:

TASK [local_docker : Create Redis socket directory] *******************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item={'file': 'environment.sh', 'mode': '0600'})
changed: [localhost] => (item={'file': 'credentials.py', 'mode': '0600'})
changed: [localhost] => (item={'file': 'docker-compose.yml', 'mode': '0600'})
changed: [localhost] => (item={'file': 'nginx.conf', 'mode': '0600'})
changed: [localhost] => (item={'file': 'redis.conf', 'mode': '0664'})

TASK [local_docker : Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]

TASK [local_docker : Remove AWX containers before migrating postgres so that the old postgres container does not get used] ********************
ok: [localhost]

TASK [local_docker : Run migrations in task container] ****************************************************************************************
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]

TASK [local_docker : Wait for launch script to create user] ***********************************************************************************
ok: [localhost -> localhost]

TASK [local_docker : Create Preload data] *****************************************************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=21   changed=12   unreachable=0    failed=0    skipped=73   rescued=0    ignored=1   

El libro de jugadas anterior descargará algunas imágenes Docker y creará un contenedor Ansible AWX.

Para verificar todas las imágenes Docker, ejecuta:

docker images

Deberías ver la siguiente salida:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
postgres      12        108ccc7c5fa3   5 days ago     371MB
redis         latest    7faaec683238   2 weeks ago    113MB
centos        8         5d0da3dc9764   6 weeks ago    231MB
ansible/awx   17.1.0    599918776cf2   7 months ago   1.41GB

Para verificar todos los contenedores en ejecución, ejecuta

docker ps

Deberías ver el siguiente resultado:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                   NAMES
b6cd8d874b09   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   2 minutes ago   Up 2 minutes   8052/tcp                                awx_task
65dd0c36334a   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   5 minutes ago   Up 2 minutes   0.0.0.0:80->8052/tcp, :::80->8052/tcp   awx_web
4119ca4a1d24   postgres:12          "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   5432/tcp                                awx_postgres
212b73bfe362   redis                "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   6379/tcp                                awx_redis

Accede a Ansible AWX

Ahora, abre tu navegador web y accede a la interfaz web de Ansible AWX utilizando la URL http://your-server-ip. Deberías ver la página de inicio de sesión de Ansible AWX:

Inicio de sesión en Ansible AWX

Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de Ansible AWX en la siguiente pantalla:

Ansible AWX

Enhorabuena, has instalado correctamente Ansible AWX en Debian 11.

También te podría gustar...