Ansible AWX met Nginx Reverse Proxy installeren op Ubuntu 18.04 LTS

AWX is een open bron web toepassing die de gebruikersinterface, REST API, en takenmotor voor Ansible verzorgt. Het is de open source versie van de Ansible Tower. Met de AWX kun je Ansible playbooks beheren, inventarissen bijhouden, en uit te voeren opdrachten plannen via de webinterface.

In deze zelfstudie laten we je zien hoe je de AWX installeert en configureert op Ubuntu server 18.04. We gaan de AWX installeren met Nginx als reverse proxy en gebouwd op de HTTPS beveiligde verbinding.

Voorwaarde

  • Ubuntu server 18.04
  • RAM geheugen +4 GB en 2 kernen
  • Root voorrechten

Wat we zullen doen:

  1. Docker en Ansible installeren
  2. Extra pakketten installeren
  3. Ansible AWX broncode downloaden en configureren
  4. Installeer Ansible AWX
  5. Installeer en configureer Nginx als omgekeerde proxy
  6. Instellen UFW Firewall
  7. Testen van

Stap 1 – Installeer Docker en Ansible

Eerst gaan we de belangrijkste pakketten installeren die nodig zijn voor de installatie van AWX, het zijn de Docker en Ansible zelf. Werk, voordat je deze pakketten installeert, de Ubuntu repository bij met het volgende commando.

sudo apt update

Installeer nu de Docker en Ansible.

sudo apt install ansible -y
sudo apt install docker.io -y

Als de installatie klaar is, controleer je de docker en ansible met de volgende commando’s.

docker version
ansible --version

Hieronder zie je het resultaat.

Installeer Docker

Stap 2 – Extra pakketten installeren

Nu gaan we aanvullende pakketten installeren voor de installatie van AWX. We installeren het ‘python-pip’ pakket op het systeem, en installeren dan de docker-compose en docker-py uit de PyPI python repository.

Installeer het ‘python-pip’ met het onderstaande apt commando.

sudo apt install python-pip -y

Als de installatie voltooid is, installeer je de docker-compose 1.9.0 en docker-py pakketten uit de PyPI repository met de pip commando’s hieronder.

pip install docker-compose==1.9.0
pip install docker-py

Installeer Python Pip

Vervolgens moeten we de nodejs en de npm op de server installeren.

Voer het volgende commando uit.

sudo apt install nodejs npm -y

Als het voltooid is, upgrade je de npm naar de nieuwste versie.

npm install npm --global

En als resultaat zijn alle afhankelijkheden op het systeem geïnstalleerd. En we zijn klaar om de AWX te installeren.

Stap 3 – Download de AWX broncode en configureer

In deze stap downloaden we de AWX broncode en configureren het inventaris bestand voor de AWX installatie.

Download de AWX broncode uit de git repository en ga naar de awx installatie directory.

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

Genereer daarna de nieuwe geheime sleutel voor de awx met het onderstaande openssl commando.

openssl rand -hex 32

Kopieer de gegenereerde geheime sleutel naar je notitie.

Bewerk nu het ‘inventory’ configuratiebestand.

vim inventory

Verander de ‘postgres_data_dir’ in de ‘/var/lib/pgdocker’ directory.

postgres_data_dir=/var/lib/pgdocker

Verander de ‘host_port’ in ‘8080’.

host_port=8080

Haal het commentaar weg bij de regel ‘use_docker_compose’ en verander de waarde in ‘true’, want we gaan de awx beheren met behulp van de docker compose.

use_docker_compose=true

Zorg er nu voor dat de ‘docker_compose_dir’ zich in de ‘/var/lib/awx’ directory bevindt.

docker_compose_dir=/var/lib/awx

Verander de credentials voor de ‘pg_password’, ‘rabbitmq_password’, ‘rabbitmq_erlang_cookie’, ‘admin_user’ en ‘admin_password’ met je eigen wachtwoord credentials.

...
pg_password=hakaseposgresawx
...
rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster
...
admin_user=hakase
admin_password=hakasepass
...

Verander daarna de geheime sleutel van de awx configuratie met de gegenereerde sleutel bovenaan.

secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33

Maak dan het commentaar op ‘project_data_dir’ ongedaan en laat de waarde als standaard staan.

project_data_dir=/var/lib/awx/projects

Bewaar en sluit de configuratie.

Hieronder staat de bewerking van het ‘inventory’ bestand.

grep -v '^#' inventory

inventarisconfiguratiebestand.

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=8080

use_docker_compose=true
docker_compose_dir=/var/lib/awx

pg_username=awx
pg_password=hakaseposgresawx
pg_database=awx
pg_port=5432

rabbitmq_password=hakaserabbitmqawx
rabbitmq_erlang_cookie=cookiemonster

admin_user=hakase
admin_password=hakasepass

create_preload_data=True

secret_key=cbdd4c70bbf82d572bfbdd454b28172642e6b8061b8c8b4937d9134294d30e33

project_data_dir=/var/lib/awx/projects

En als resultaat zijn we klaar om de awx in de volgende stap te installeren.

Stap 4 – Installeer de Ansible AWX

Installeer de awx met het volgende ansible-playbook commando.

ansible-playbook -i inventory install.yml

Het playbook zal enkele taken uitvoeren, waaronder het downloaden van docker images en het aanmaken van nieuwe containers postgresql, memcached, rabbitmq, de awx web-applicatie, en de awx taak.

En hieronder staat het resultaat.

Ansible Draaiboek

Ga vervolgens naar de ‘/var/lib/awx’ directory en je krijgt de ‘docker-compose.yml’ configuratie. Controleer dan alle beschikbare docker containers met het docker-compose commando.

cd /var/lib/awx
docker-compose ps

En je krijgt awx containers te zien zoals hieronder.

AWX Container

Bovendien kun je de logs van de ‘task’ dienst controleren met het volgende commando.

docker-compose logs task

Stap 5 – Installeer en configureer Nginx als omgekeerde proxy

Na het installeren van de awx, zullen we Nginx installeren en instellen als een omgekeerde proxy voor de awx die poort ‘8080’ draait.

Installeer Nginx met het volgende apt commando.

sudo apt install nginx -y

Als de installatie voltooid is, ga dan naar de ‘/etc/nginx/sites-available/’ directory en maak met vim editor een nieuwe virtuele host configuratie genaamd ‘awx’.

cd /etc/nginx/sites-available/
vim awx

Plak nu de onderstaande configuratie.

server {
   listen 80;
   server_name awx.hakase-labs.io;
   add_header Strict-Transport-Security max-age=2592000;
   rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    listen 443 ssl http2;
    server_name awx.hakase-labs.io;

    access_log /var/log/nginx/awx.access.log;
    error_log /var/log/nginx/awx.error.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    ssl_session_timeout 5m;
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;

location / {
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_pass http://10.5.5.20:8080/;
    }
}

Verander de domeinnaam en het proxy_pass IP adres met je eigen, sla dan op en sluit af.

Activeer nu de ‘awx’ virtuele host en test de nginx configuratie.

ln -s /etc/nginx/sites-available/awx /etc/nginx/sites-enabled/
nginx -t

Nginx Reverse Proxy voor Ansible AWX

Controleer of er geen fout optreedt bij de nginx configuratie en start dan de nginx dienst opnieuw.

sudo systemctl restart nginx

Daarmee is de installatie en configuratie van Nginx als reverse proxy voor awx voltooid.

Stap 6 – Configureer de UFW firewall

Voeg de SSH, HTTP, en HTTPS diensten toe aan de UFW firewall configuratie.

ufw allow ssh
ufw allow http
ufw allow https

Start nu de ufw firewall dienst en schakel hem in.

ufw enable

Typ ‘y’ bij yes en de ufw firewall is ingesteld.

Stap 7 – Testen

Open je webbrowser en typ je awx URL in de adresbalk.

https://awx.hakase-labs.io

En je krijgt de awx login pagina te zien zoals hieronder.

Ansible AWX Inloggen

Typ nu de gebruiker ‘hakase’ en het wachtwoord ‘hakasepass’, en klik dan op de knop ‘sign in’.

Nu krijg je het awx admin dashboard zoals hieronder.

Ansible AWX Dashboard

En de installatie van Ansible AWX met Nginx reverse proxy is met succes voltooid.

Referentie

https://github.com/ansible/awx