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 sul Web e un motore di attività basato su Ansible. Fornisce una potente API REST e consente di gestire o sincronizzare l'inventario con altre origini 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.
- Sul tuo server è configurata una password di root.
Per iniziare
Prima di iniziare, dovrai installare il repository EPEL nel tuo sistema. Puoi installarlo con il seguente comando:
dnf install epel-release -y
Successivamente, dovrai installare alcuni pacchetti aggiuntivi necessari per eseguire AWX sul tuo sistema. Puoi installarli tutti con il seguente comando:
dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y
Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.
Installa 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 di CentOS 8. Quindi dovrai aggiungere il repository Docker nel tuo sistema. Puoi aggiungere il repository Docker con il seguente comando:
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Una volta aggiunta, installa l'ultima versione stabile di Docker con il seguente comando:
dnf install docker-ce-3:18.09.1-3.el7 -y
Una volta installato Docker, controlla la versione installata di Docker con il seguente comando:
docker --versione
Dovresti ottenere il seguente output:
Docker versione 19.03.7, build 7141c199a2
Quindi, avvia il servizio Docker e abilitalo all'avvio dopo il riavvio del sistema con il seguente comando:
systemctl avvia la finestra mobile
systemctl attiva la finestra mobile
Puoi verificare lo stato del servizio Docker con il seguente comando:
docker di stato systemctl
Dovresti ottenere il seguente output:
? docker.service - Motore del contenitore dell'applicazione Docker caricato:caricato (/usr/lib/systemd/system/docker.service; disabilitato; preimpostazione del fornitore:disabilitato) Attivo:attivo (in esecuzione) da mer 2020-03-11 02:36:04 EDT; 23min fa Documenti:https://docs.docker.com PID principale:5882 (dockerd) Compiti:101 Memoria: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 contengono erd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/166b153faa275>
Quindi, installa Docker Compose utilizzando il seguente comando:
pip3 installa docker-compose
Una volta installato, verifica la versione di Docker Compose utilizzando il seguente comando:
docker-compose --version
Dovresti vedere il seguente output:
docker-compose versione 1.25.4, build sconosciuta
Infine, esegui il comando seguente per impostare il comando python per utilizzare python 3:
alternative --set python /usr/bin/python3
Installa Ansible AWX
Innanzitutto, scarica l'ultima versione di Ansible AWX dal repository Git Hub utilizzando il comando seguente:
git clone https://github.com/ansible/awx.git
Quindi, genera una chiave segreta per la crittografia del file di inventario con il seguente comando:
openssl rand -base64 30
Dovresti ottenere il seguente output:
R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp
Nota:ricorda i segreti di cui sopra, dovrai incollarli nel file di inventario.
Quindi, cambia la directory in awx/installer/ e modifica il file di inventario:
cd awx/installer/
nano inventory
Modifica le seguenti righe:
[all:vars]dockerhub_base=ansibleawx_task_hostname=awxawx_web_hostname=awxwebpostgres_data_dir="/var/lib/pgdocker"host_port=80host_port_ssl=443docker_compose_dir="~/.awx/awxcompose"pg_username=awxpg_password=awxpasspg_passdatabase=awx3pg_port_admin=5password32pg_password_admin awxpassrabbitmq_erlang_cookie=cookiemonsteradmin_user=admin_password=passwordcreate_preload_data=Truesecret_key=R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgpawx_official=trueawx_alternate_dns_servers="8.8.8.8,8.8.4.4"project_data/awx/project/var/librexSalva e chiudi il file quando hai finito. Quindi, crea una directory per Postgres:
mkdir /var/lib/pgdockerInfine, esegui il comando seguente per installare AWX:
ansible-playbook -i inventory install.ymlUna volta completata l'installazione, dovresti ottenere il seguente output:
salto:[localhost]TASK [local_docker:Carica immagine web] ********************************** ************************************************** ********************** ignorando:[localhost]TASK [local_docker:Carica immagine attività] *************** ************************************************** **************************************** ignorando:[localhost]TASK [local_docker:Imposta percorso completo dell'immagine per l'installazione locale] ******************************************* **************************************** ignorando:[localhost]TASK [local_docker:Imposta Percorsi immagine DockerHub] *************************************************** *************************************************ok :[localhost]TASK [local_docker :Crea directory ~/.awx/awxcompose] ********************************* ************************************************** ***modificato:[localhost]TASK [local_docker:Crea Docker Componi configurazione] ********************************* ************************************************** **modificato:[localhos t] => (item=environment.sh) modificato:[localhost] => (item=credentials.py) modificato:[localhost] => (item=docker-compose.yml) modificato:[localhost] => (item=docker-compose.yml) =nginx.conf)TASK [local_docker:Render file SECRET_KEY] ************************************* ************************************************** ***********modificato:[localhost]TASK [local_docker:avvia i contenitori] ************************** ************************************************** ************************* modificato:[localhost]TASK [local_docker:Aggiorna CA trust nel contenitore awx_web] ********** ************************************************** ************************* modificato:[localhost]TASK [local_docker:Aggiorna CA trust nel contenitore awx_task] ********** ************************************************** ***********************modificato:[localhost]PLAY RECAP ******************** ************************************************** ************************************************** ************localhost:ok=14 modifiche d=6 irraggiungibile=0 non riuscito=0 ignorato=95 salvato=0 ignorato=0Il comando precedente creerà e avvierà tutti i contenitori Docker necessari per AWX. Puoi verificare i contenitori in esecuzione con il seguente comando:
docker psDovresti vedere il seguente output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES4b91575d64b1 ansible/awx_task:9.2.0 "/tini -- /bin/sh -c…" Circa un minuto fa Su Circa un minuto 8052/tcp awx_task9827b9831fa5 ansible/awx_web:9.2.0 "/tini -- /bin/sh -c..." Circa un minuto fa Su Circa un minuto 0.0.0.0:80->8052/tcp awx_web47300ec1c26f postgres:10 "docker-entrypoint.s..." Circa un minuto fa Su Circa un minuto 5432/tcp awx_postgres166b153faa27 ansible/awx_rabbitmq:3.7.4 "docker-entrypoint.s..." Circa un minuto fa Fino a 58 secondi 4369/tcp, 5671-5672/tcp, 15671-15672/tcp, 25672/tcp awx_6f9rabbitmq0f4 "docker-entrypoint.s..." Circa un minuto fa Su Circa a minuto 11211/tcp awx_memcachedConfigura SELinux e Firewall
Per impostazione predefinita, SELinux è abilitato in CentOS 8. Si consiglia di disabilitarlo per funzionare con AWX nell'ambiente Docker. Puoi disabilitarlo modificando il seguente file:
nano /etc/sysconfig/selinuxTrova la seguente riga:
SELINUX=applicazioneE sostituiscilo con la seguente riga:
SELINUX=disabilitatoSalva e chiudi il file quando hai finito. Quindi, riavvia il sistema per implementare le modifiche. Successivamente, dovrai consentire il servizio http e https tramite firewalld. Puoi consentirli con il seguente comando:
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add- servizio=httpsQuindi, riavvia il servizio firewalld per applicare le modifiche:
firewall-cmd --reloadAccedi all'interfaccia Web AWX
Ora apri il tuo browser web e digita l'URL http://your-server-ip. Verrai reindirizzato alla pagina di accesso di AWX:
Fornisci il nome utente e la password dell'amministratore che hai definito nel file di inventario e fai clic su SIGN IN pulsante. Dovresti vedere la dashboard predefinita di AWX nella pagina seguente:
Conclusione
Congratulazioni! hai installato correttamente AWX con Docker su CentOS 8. Ora puoi gestire e controllare facilmente il tuo progetto Ansible utilizzando l'interfaccia web AWX.