Ansible AWX unter Debian 11 installieren

Ansible AWX ist eine kostenlose und von Red Hat gesponserte Open-Source-Webanwendung, mit der du Ansible Playbooks und Inventare verwalten kannst. Sie bietet eine webbasierte Oberfläche, die die Nutzung von Ansible in einer IT-Umgebung komfortabler macht. Außerdem bietet sie eine REST-API, mit der du den Zugriff kontrollieren und Inventare grafisch verwalten oder mit einer Vielzahl von Cloud-Quellen synchronisieren kannst.

Dieses Tutorial zeigt dir, wie du Ansible AWX unter Debian 11 installierst.

Voraussetzungen

  • Ein Server, auf dem Debian 11 läuft.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Ansible-Repository hinzufügen

Das Ansible-Paket ist standardmäßig nicht im Debian 11 Standard-Repository enthalten. Daher musst du das Ansible-Repository auf deinem Server hinzufügen.

Installiere zunächst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:

apt-get install apt-transport-https ca-certificates software-properties-common unzip gnupg2 curl git -y

Sobald alle Abhängigkeiten installiert sind, bearbeite die Datei sources.list und füge das Ansible-Repository hinzu:

nano /etc/apt/sources.list

Füge die folgende Zeile hinzu:

deb http://ppa.launchpad.net/ansible/ansible/ubuntu focal main

Speichere und schließe die Datei und füge den GPG-Schlüssel mit dem folgenden Befehl hinzu:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367

Du erhältst die folgende Ausgabe:

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.47eo2M3Kib/gpg.1.sh --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
gpg: key 93C4A3FD7BB9C367: public key "Launchpad PPA for Ansible, Inc." imported
gpg: Total number processed: 1
gpg:               imported: 1

Als Nächstes aktualisierst du den Repository-Cache mit dem folgenden Befehl:

apt-get update -y

Ansible auf Debian 11 installieren

Führe nun den folgenden Befehl aus, um Ansible mit dem folgenden Befehl zu installieren:

apt-get install ansible -y

Sobald Ansible installiert ist, überprüfe die Ansible-Version mit dem folgenden Befehl:

ansible --version

Du erhältst die folgende Ausgabe:

ansible [core 2.11.6] 
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 2.11.3
  libyaml = True

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Docker CE installieren

Standardmäßig ist die neueste Version von Docker CE nicht im Standard-Repository von Debian 11 enthalten. Deshalb musst du sie zum APT hinzufügen.

Lade zunächst den Docker GPG-Schlüssel herunter und füge ihn mit dem folgenden Befehl hinzu:

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Als Nächstes fügst du das Docker CE Repository mit dem folgenden Befehl zum APT hinzu:

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

Als Nächstes aktualisierst du das Repository und installierst Docker CE mit dem folgenden Befehl:

apt-get update -y
apt-get install docker-ce -y

Sobald die Installation abgeschlossen ist, überprüfe den Status von Docker mit folgendem Befehl:

systemctl status docker

Du erhältst die folgende Ausgabe:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2021-11-01 04:59:11 UTC; 26min ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 5066 (dockerd)
      Tasks: 32
     Memory: 1.0G
        CPU: 1min 57.723s
     CGroup: /system.slice/docker.service
             ?? 5066 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
             ??21970 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 8052
             ??21994 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.2 -container-port 8052

Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756163493Z" level=info msg="Docker daemon" commit=e2f740d graphdriver(s)=ove>
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.756303194Z" level=info msg="Daemon has completed initialization"
Nov 01 04:59:11 debian11 systemd[1]: Started Docker Application Container Engine.
Nov 01 04:59:11 debian11 dockerd[5066]: time="2021-11-01T04:59:11.796631663Z" level=info msg="API listen on /run/docker.sock"

Um die Docker-Version zu überprüfen, führe den folgenden Befehl aus:

docker -v

Du solltest die folgende Ausgabe sehen:

Docker version 20.10.10, build b485636

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Installiere Docker Compose und andere Abhängigkeiten

Lade zunächst die Docker Compose-Binärdatei mit folgendem Befehl aus dem Git-Repository herunter:

wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64

Verschiebe das heruntergeladene Binary in das Verzeichnis /usr/bin/:

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

Als Nächstes legst du die Ausführungsberechtigung für die Docker-Compose-Binärdatei fest:

chmod +x /usr/bin/docker-compose

Als Nächstes überprüfst du die Version von Docker Compose mit dem folgenden Befehl:

docker-compose version

Du erhältst die folgende Ausgabe:

docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

Als Nächstes installierst du Node.js und NPM mit dem folgenden Befehl:

apt-get install nodejs npm -y
npm install npm --global

Als Nächstes installierst du PIP und andere Abhängigkeiten mit dem folgenden Befehl:

apt-get install python3-pip git pwgen -y

Als nächstes installierst du das Python-Modul für Docker Compose mit folgendem Befehl:

pip3 install docker-compose==1.29.0

Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.

Ansible AWX installieren

Lade zunächst Ansible AWX mit folgendem Befehl aus dem Git Hub Repository herunter:

wget https://github.com/ansible/awx/archive/17.1.0.zip

Sobald der Download abgeschlossen ist, entpackst du die heruntergeladene Datei mit dem folgenden Befehl:

unzip 17.1.0.zip

Wechsle dann in das entpackte Verzeichnis und generiere mit dem folgenden Befehl einen geheimen Schlüssel:

cd awx-17.1.0/installer/
pwgen -N 1 -s 30

Du erhältst die folgende Ausgabe:

dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

Als Nächstes bearbeitest du die Inventardatei und legst deinen geheimen Schlüssel, den Benutzernamen und das Passwort des Administrators fest:

nano inventory

Ändere die folgenden Zeilen:

admin_user=admin
admin_password=securepassword
secret_key=dGF8eiFiTkzpaqpWyckxSLe57sZNfJ

Speichere und schließe die Datei und führe das Ansible Playbook aus, um Ansible AWX zu installieren:

ansible-playbook -i inventory install.yml

Sobald Ansible AWX installiert ist, erhältst du die folgende Ausgabe:

TASK [local_docker : Create Redis socket directory] *******************************************************************************************
changed: [localhost]

TASK [local_docker : Create Docker Compose Configuration] *************************************************************************************
changed: [localhost] => (item={'file': 'environment.sh', 'mode': '0600'})
changed: [localhost] => (item={'file': 'credentials.py', 'mode': '0600'})
changed: [localhost] => (item={'file': 'docker-compose.yml', 'mode': '0600'})
changed: [localhost] => (item={'file': 'nginx.conf', 'mode': '0600'})
changed: [localhost] => (item={'file': 'redis.conf', 'mode': '0664'})

TASK [local_docker : Render SECRET_KEY file] **************************************************************************************************
changed: [localhost]

TASK [local_docker : Remove AWX containers before migrating postgres so that the old postgres container does not get used] ********************
ok: [localhost]

TASK [local_docker : Run migrations in task container] ****************************************************************************************
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]

TASK [local_docker : Wait for launch script to create user] ***********************************************************************************
ok: [localhost -> localhost]

TASK [local_docker : Create Preload data] *****************************************************************************************************
changed: [localhost]

PLAY RECAP ************************************************************************************************************************************
localhost                  : ok=21   changed=12   unreachable=0    failed=0    skipped=73   rescued=0    ignored=1   

Das obige Playbook wird einige Docker-Images herunterladen und einen Ansible AWX-Container erstellen.

Um alle Docker-Images zu verifizieren, führe es aus:

docker images

Du solltest die folgende Ausgabe sehen:

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
postgres      12        108ccc7c5fa3   5 days ago     371MB
redis         latest    7faaec683238   2 weeks ago    113MB
centos        8         5d0da3dc9764   6 weeks ago    231MB
ansible/awx   17.1.0    599918776cf2   7 months ago   1.41GB

Um alle laufenden Container zu überprüfen, führe aus:

docker ps

Du solltest die folgende Ausgabe sehen:

CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                   NAMES
b6cd8d874b09   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   2 minutes ago   Up 2 minutes   8052/tcp                                awx_task
65dd0c36334a   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   5 minutes ago   Up 2 minutes   0.0.0.0:80->8052/tcp, :::80->8052/tcp   awx_web
4119ca4a1d24   postgres:12          "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   5432/tcp                                awx_postgres
212b73bfe362   redis                "docker-entrypoint.s…"   5 minutes ago   Up 2 minutes   6379/tcp                                awx_redis

Zugriff auf Ansible AWX

Öffne nun deinen Webbrowser und rufe die Ansible AWX-Weboberfläche unter der URL http://your-server-ip auf. Du solltest die Ansible AWX Anmeldeseite sehen:

Ansible AWX Anmeldung

Gib deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche Login. Auf dem folgenden Bildschirm solltest du das Ansible AWX-Dashboard sehen:

Ansible AWX

Glückwunsch! Du hast Ansible AWX erfolgreich auf Debian 11 installiert.

Das könnte dich auch interessieren …