Introduzione
AWX sta per "Ansible Web eXecutable" è un progetto gratuito e open source che ti consente di gestire e controllare facilmente il tuo progetto Ansible. Fornisce un'interfaccia utente basata su Web e un motore delle attività basato su Ansible. Fornisce una potente API REST e consente di gestire o sincronizzare l'inventario con altre fonti cloud, controllare l'accesso e integrarsi con LDAP.
In questo tutorial, ti mostreremo come installare Ansible AWX con Docker su CentOS 8.
Prerequisiti
- Un server che esegue CentOS 8 con almeno 4 GB di RAM.
- Un utente non root con privilegi sudo.
Se desideri installare Ansible AWX su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Installare le dipendenze
Prima di iniziare, dovrai installare il repository EPEL nel tuo sistema. Puoi installarlo con il seguente comando:
sudo dnf install epel-release -y
Successivamente, dovrai installare alcuni pacchetti aggiuntivi richiesti per eseguire AWX sul tuo sistema. Puoi installarli tutti con il seguente comando:
sudo dnf install git gcc gcc-c++ ansible nano nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
Una volta installati tutti i pacchetti, è possibile procedere al passaggio successivo.
Installare Docker e Docker Compose
Successivamente, dovrai installare Docker per eseguire AWX all'interno del contenitore Docker. Per impostazione predefinita, l'ultima versione di Docker non è disponibile nel repository predefinito CentOS 8. Quindi dovrai aggiungere il repository Docker nel tuo sistema. È possibile aggiungere il repository Docker con il seguente comando:
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Una volta aggiunto, installa l'ultima versione stabile di Docker con il seguente comando:
sudo dnf install docker-ce-3:18.09.1-3.el7 -y
Una volta che Docker è stato installato, controllare la versione installata di Docker con il seguente comando:
docker --version
Dovresti ottenere il seguente output:
Docker version 19.03.8, build afacb8b
Quindi, avviare il servizio Docker e abilitarlo per l'avvio dopo il riavvio del sistema con il comando seguente:
sudo systemctl start docker
sudo systemctl enable docker
È possibile verificare lo stato del servizio Docker con il seguente comando:
sudo systemctl status docker
Dovresti ottenere il seguente output:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-03-21 18:11:15 CET; 5s ago
Docs: https://docs.docker.com
Main PID: 8624 (dockerd)
Tasks: 18
Memory: 47.7M
CGroup: /system.slice/docker.service
├─8624 /usr/bin/dockerd -H fd://
└─8638 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
Quindi, installare la Docker composer utilizzando il seguente comando:
sudo pip3 install docker-compose
Una volta installato, verificare la versione di Docker composer utilizzando il comando seguente:
docker-compose --version
Dovresti vedere il seguente output:
docker-compose version 1.25.4, build unknown
Infine, esegui il comando seguente per impostare il comando python per utilizzare python 3:
sudo alternatives --set python /usr/bin/python3
Installare Ansible AWX
Innanzitutto, scarica l'ultima versione di Ansible AWX dal repository Git Hub utilizzando il seguente comando:
sudo git clone https://github.com/ansible/awx.git
Successivamente, genera una chiave segreta per la crittografia del file di inventario con il seguente comando:
sudo openssl rand -base64 30
Dovresti ottenere un output simile al seguente:
cAP5Ag+/Lwlg2i5+e8iZXKfHNbpjtUfW3dp/ZfGE
Nota: ricorda il codice di cui sopra, dovrai incollarlo nel file di inventario.
Quindi, modifica la directory in awx/installer/
e modifica il file di inventario:
cd awx/installer/
sudo nano inventory
Modifica il file in questo modo:
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
[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=cAP5Ag+/Lwlg2i5+e8iZXKfHNbpjtUfW3dp/ZfGE
awx_official=true
awx_alternate_dns_servers="8.8.8.8,8.8.4.4"
project_data_dir=/var/lib/awx/projects
Salva e chiudi il file al termine. Quindi, crea una directory per Postgres:
sudo mkdir /var/lib/pgdocker
Infine, esegui il comando seguente per installare AWX:
sudo ansible-playbook -i inventory install.yml
Una volta completata correttamente l'installazione, dovresti ottenere il seguente output:
...
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
...
Il comando precedente creerà e avvierà tutti i contenitori Docker richiesti per AWX. È possibile verificare i contenitori in esecuzione con il seguente comando:
sudo docker ps
Dovresti vedere il seguente output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a7ffee91018 ansible/awx_task:9.3.0 "/tini -- /bin/sh -c…" 13 minutes ago Up 13 minutes 8052/tcp awx_task
179208933b55 ansible/awx_web:9.3.0 "/tini -- /bin/sh -c…" 13 minutes ago Up 13 minutes 0.0.0.0:80->8052/tcp awx_web
86e4341934ca postgres:10 "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 5432/tcp awx_postgres
40538e9ddc0f memcached:alpine "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 11211/tcp awx_memcached
dfff98445d8e redis "docker-entrypoint.s…" 13 minutes ago Up 13 minutes 6379/tcp awx_redis
Configurare SELinux e Firewall (Opzionale)
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Si consiglia di disabilitarlo per funzionare in AWX nell'ambiente Docker. Puoi disabilitarlo modificando il seguente file:
sudo nano /etc/sysconfig/selinux
Trova la riga SELINUX
e modificala nel seguente modo:
SELINUX = disabled
Salva e chiudi il file al termine. Quindi, riavvia il sistema per implementare le modifiche. Successivamente, dovrai consentire il servizio http e https tramite firewalld se è abilitato. Puoi permetterli con i seguenti comandi:
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
Quindi, riavviare il servizio firewalld per applicare le modifiche:
sudo firewall-cmd --reload
Accedere all'interfaccia Web di AWX
Ora apri il tuo browser web e digita l'URL del tuo nome dominio o indirizzo IP, http://DOMINIO_O_IP
. Verrai reindirizzato alla pagina di accesso di AWX.
Inserire il nome utente e la password che avete definito nel file inventory e fare clic sul tasto SIGN IN. Dovresti vedere la dashboard predefinita di AWX.
Conclusione
Hai installato con successo AWX con Docker su CentOS 8. Ora puoi gestire e controllare facilmente il tuo progetto Ansible usando l'interfaccia web di AWX.