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 *