Cómo instalar Ansible AWX en CentOS 8

Inicio de sesión de Ansible AWX

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

En este tutorial, le 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 está configurada en su servidor.

Empezando

Antes de comenzar, deberá instalar el repositorio EPEL en su sistema. Puedes instalarlo con el siguiente comando:

dnf install epel-release -y

A continuación, deberá instalar algunos paquetes adicionales necesarios para ejecutar AWX en su sistema. Puede 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 que todos los paquetes estén instalados, puede continuar con el siguiente paso.

Instalar Docker y Docker Compose

A continuación, deberá instalar Docker para ejecutar AWX dentro del contenedor Docker. De forma predeterminada, la última versión de Docker no está disponible en el repositorio predeterminado de CentOS 8. Por lo tanto, deberá agregar el repositorio Docker en su sistema. Puede agregar el repositorio de Docker con el siguiente comando:

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

Una vez agregado, instale la última versión estable de Docker con el siguiente comando:

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

Una vez que se haya instalado Docker, verifique la versión instalada de Docker con el siguiente comando:

docker --version

Deberías obtener el siguiente resultado:

Docker version 19.03.7, build 7141c199a2

A continuación, inicie el servicio Docker y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

systemctl start docker
systemctl enable docker

Puede verificar el estado del servicio de Docker con el siguiente comando:

systemctl status docker

Deberías obtener el siguiente resultado:

? 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, instale Docker compose con el siguiente comando:

pip3 install docker-compose

Una vez instalado, verifique la versión de composición de Docker con el siguiente comando:

docker-compose --version

Debería ver el siguiente resultado:

docker-compose version 1.25.4, build unknown

Finalmente, ejecute el siguiente comando para configurar el comando python para usar python 3:

alternatives --set python /usr/bin/python3

Instalar Ansible AWX

Primero, descargue la última versión de Ansible AWX del repositorio de Git Hub usando el siguiente comando:

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

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

openssl rand -base64 30

Deberías obtener el siguiente resultado:

R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp

Nota: Recuerde los secretos anteriores, deberá pegarlos en el archivo de inventario.

A continuación, cambie el directorio a awx/installer/ y edite 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

Guarde y cierre el archivo cuando haya terminado. Luego, crea un directorio para Postgres:

mkdir /var/lib/pgdocker

Finalmente, ejecute el siguiente comando para instalar AWX:

ansible-playbook -i inventory install.yml

Una vez que la instalación se haya completado con éxito, debería obtener el siguiente resultado: Anuncio

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. Puede verificar los contenedores en ejecución con el siguiente comando:

docker ps

Debería ver el siguiente resultado:

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á habilitado en CentOS 8. Se recomienda deshabilitarlo para que funcione AWX en el entorno Docker. Puede desactivarlo editando el siguiente archivo:

nano /etc/sysconfig/selinux

Encuentra la siguiente línea:

SELINUX=enforcing

Y, reemplácelo con la siguiente línea:

SELINUX=disabled

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie su sistema para implementar los cambios. A continuación, deberá permitir el servicio http y https a través de firewalld. Puede 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, reinicie el servicio firewalld para aplicar los cambios:

firewall-cmd --reload

Acceder a la interfaz web de AWX

Ahora, abra su navegador web y escriba la URL http://your-server-ip. Será redirigido a la página de inicio de sesión de AWX:

Inicio de sesión de Ansible AWX

Proporcione su nombre de usuario y contraseña de administrador que ha definido en el archivo de inventario y haga clic en el SEÑAL EN botón. Debería ver el panel predeterminado de AWX en la siguiente página:

Interfaz Ansible AWX

Conclusión

¡Felicidades! ha instalado correctamente AWX con Docker en CentOS 8. Ahora puede administrar y controlar su proyecto de Ansible fácilmente mediante la interfaz web de AWX.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *