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:
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:
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.