Installation von Ansible AWX unter CentOS 8

AWX steht für „Ansible Web eXecutable“ und ist ein freies und quelloffenes Projekt, das Ihnen die einfache Verwaltung und Kontrolle Ihres Ansible-Projekts ermöglicht. Es bietet eine webbasierte Benutzerschnittstelle und eine auf Ansible aufbauende Aufgaben-Engine. Es bietet eine leistungsstarke REST-API und ermöglicht Ihnen die Verwaltung oder Synchronisierung von Beständen mit anderen Cloud-Quellen, die Kontrolle des Zugriffs und die Integration mit LDAP.

In diesem Tutorial zeigen wir Ihnen, wie Sie Ansible AWX mit Docker unter CentOS 8 installieren können.

Voraussetzungen

  • Ein Server mit CentOS 8 mit mindestens 4 GB RAM.
  • Auf Ihrem Server ist ein Root-Passwort konfiguriert.

Erste Schritte

Bevor Sie beginnen, müssen Sie das EPEL-Repository in Ihrem System installieren. Sie können es mit dem folgenden Befehl installieren:

dnf install epel-release -y

Als nächstes müssen Sie einige zusätzliche Pakete installieren, die für die Ausführung von AWX auf Ihrem System erforderlich sind. Sie können sie alle mit dem folgenden Befehl installieren:

dnf install git gcc gcc-c++ ansible nodejs gettext device-mapper-persistent-data lvm2 bzip2 python3-pip -y

Sobald alle Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Docker installieren und Docker komponieren

Als nächstes müssen Sie Docker installieren, um AWX innerhalb des Docker-Containers auszuführen. Standardmäßig ist die neueste Version von Docker nicht im Standard-Repository von CentOS 8 verfügbar. Daher müssen Sie das Docker-Repository in Ihrem System hinzufügen. Sie können das Docker-Repository mit dem folgenden Befehl hinzufügen:

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

Sobald Sie die neueste stabile Version von Docker hinzugefügt haben, installieren Sie sie mit folgendem Befehl:

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

Nach der Installation des Dockers überprüfen Sie die installierte Version des Dockers mit dem folgenden Befehl:

docker --version

Sie sollten die folgende Ausgabe erhalten:

Docker version 19.03.7, build 7141c199a2

Als nächstes starten Sie den Docker-Dienst und aktivieren ihn nach dem Systemneustart mit dem folgenden Befehl:

systemctl start docker
 systemctl enable docker

Sie können den Status des Docker-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status docker

Sie sollten die folgende Ausgabe erhalten:

? 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>

Installieren Sie als Nächstes die Docker-Composite mit dem folgenden Befehl:

pip3 install docker-compose

Nach der Installation überprüfen Sie die Docker-Compose-Version mit dem folgenden Befehl:

docker-compose --version

Sie sollten die folgende Ausgabe sehen: Sie sollten die folgende Ausgabe sehen:

docker-compose version 1.25.4, build unknown

Schließlich führen Sie den folgenden Befehl aus, um den Befehl python auf die Verwendung von python 3 zu setzen:

alternatives --set python /usr/bin/python3

Installieren Sie Ansible AWX

Laden Sie zunächst die neueste Version von Ansible AWX aus dem Git-Hub-Repository mit folgendem Befehl herunter:

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

Generieren Sie dann einen geheimen Schlüssel zur Verschlüsselung der Inventardatei mit folgendem Befehl:

openssl rand -base64 30

Sie sollten die folgende Ausgabe erhalten:

R+kbcDEUS8DlAftAbfWafVqLZ0lUy+Paqo4fEtgp

Hinweis: Merken Sie sich die oben genannten Geheimnisse, Sie müssen sie in die Inventardatei einfügen.

Als nächstes ändern Sie das Verzeichnis in awx/installer/ und bearbeiten die Inventardatei:

cd awx/installer/
 nano inventory

Ändern Sie die folgenden Zeilen:

[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

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Erstellen Sie dann ein Verzeichnis für Postgres:

mkdir /var/lib/pgdocker

Führen Sie schließlich den folgenden Befehl aus, um AWX zu installieren:

ansible-playbook -i inventory install.yml

Wenn die Installation erfolgreich abgeschlossen ist, sollten Sie die folgende Ausgabe erhalten:

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   

Der obige Befehl erzeugt und startet alle erforderlichen Docker-Container für AWX. Sie können die laufenden Container mit dem folgenden Befehl überprüfen:

docker ps

Sie sollten die folgende Ausgabe sehen:

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

Konfigurieren Sie SELinux und Firewall

Standardmäßig ist SELinux in CentOS 8 aktiviert. Es wird empfohlen, es zu deaktivieren, damit AWX in der Docker-Umgebung funktioniert. Sie können es deaktivieren, indem Sie die folgende Datei bearbeiten:

nano /etc/sysconfig/selinux

Suchen Sie die folgende Zeile:

SELINUX=enforcing

Und ersetzen Sie diese durch die folgende Zeile:

SELINUX=disabled

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Starten Sie dann Ihr System neu, um die Änderungen zu implementieren. Als Nächstes müssen Sie den http- und https-Dienst durch Firewalld zulassen. Sie können sie mit dem folgenden Befehl zulassen:

firewall-cmd --zone=public --add-masquerade --permanent
 firewall-cmd --permanent --add-service=http
 firewall-cmd --permanent --add-service=https

Als nächstes starten Sie den Firewall-Dienst neu, um die Änderungen zu übernehmen:

firewall-cmd --reload

Zugriff auf die AWX-Webschnittstelle

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL http://your-server-ip ein. Sie werden auf die AWX-Anmeldeseite weitergeleitet:

Mögliche AWX-Anmeldung

Geben Sie Ihren Admin-Benutzernamen und Ihr Passwort ein, das Sie in der Inventardatei definiert haben, und klicken Sie auf die Schaltfläche ANMELDEN. Sie sollten das AWX-Standard-Dashboard auf der folgenden Seite sehen:

Mögliche AWX-Schnittstelle

Schlussfolgerung

Herzlichen Glückwunsch! Sie haben AWX mit Docker erfolgreich auf CentOS 8 installiert. Sie können nun Ihr Ansible-Projekt einfach über die AWX-Webschnittstelle verwalten und kontrollieren.

Das könnte dich auch interessieren …