So installieren Sie Ansible AWX auf CentOS 7
Im vorherigen Tutorial habe ich Ihnen gezeigt, wie Sie Ansible AWX über Docker einsetzen können. Inzwischen habe ich zwei Projekte gefunden, die rpm-Pakete für AWX erstellen. Daher werde ich Ihnen in diesem Tutorial zeigen, wie Sie Ansible AWX aus RPM-Dateien auf CentOS 7 installieren können. Ansible AWX ist die OpenSource-Version der Ansible Tower-Software.
Ich werde 3 Server mit CentOS 7 Minimalinstallation und SELinux im permissiven Modus verwenden.
- 192.168.1.25 AWX-Server
- 192.168.1.21 client1
- 192.168.1.22 client2
Minimale Systemanforderungen für AWX Server
- Mindestens 4 GB Arbeitsspeicher
- Mindestens 2 CPU-Kerne
- Mindestens 20 GB Speicherplatz
- Laufender Docker, Openshift oder Kubernetes
Überprüfen Sie die SELinux-Konfiguration.
[root@awx ~]# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: permissive Mode from config file: permissive Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28 [root@awx ~]#
Fügen Sie die Host-Einträge in der Datei
/etc/hosts
[root@awx ~]# cat /etc/hosts 192.168.1.25 awx.sunil.cc awx 192.168.1.21 client1.sunil.cc client1 192.168.1.22 client2.sunil.cc client2 [root@awx ~]#
Hinzufügen der Firewall-Regeln
[root@awx ~]# systemctl enable firewalld Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service. Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service. [root@awx ~]# systemctl start firewalld [root@awx ~]# firewall-cmd --add-service=http --permanent;firewall-cmd --add-service=https --permanent success success [root@awx ~]# systemctl restart firewalld [root@awx ~]#
CentOS EPEL-Repository aktivieren.
[root@awx ~]# yum install -y epel-release
Wir benötigen postgresql 9.6 für die AWX-Installation.
Aktivieren Sie postgreSQL repo.
[root@awx ~]# yum install -y https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Installation von postgreSQL.
[root@awx ~]# yum install postgresql96-server -y
Installation der anderen notwendigen Drehzahlen.
[root@awx ~]# yum install -y rabbitmq-server wget memcached nginx ansible
Installation von Ansible AWX
Hinzufügen des AWX-Repo.
[root@awx ~]# wget -O /etc/yum.repos.d/awx-rpm.repo https://copr.fedorainfracloud.org/coprs/mrmeee/awx/repo/epel-7/mrmeee-awx-epel-7.repo
Installieren der Drehzahl
[root@awx ~]# yum install -y awx
Intialisierung der Datenbank
[root@awx ~]# /usr/pgsql-9.6/bin/postgresql96-setup initdb Initializing database ... OK [root@awx ~]#
Starten des Rabbitmq-Dienstes
[root@awx ~]# systemctl start rabbitmq-server [root@awx ~]# systemctl enable rabbitmq-server Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service. [root@awx ~]#
PostgreSQL-Dienst starten
[root@awx ~]# systemctl enable postgresql-9.6 Created symlink from /etc/systemd/system/multi-user.target.wants/postgresql-9.6.service to /usr/lib/systemd/system/postgresql-9.6.service. [root@awx ~]# systemctl start postgresql-9.6
Starten des Memcached-Dienstes
[root@awx ~]# systemctl enable memcached Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service. [root@awx ~]# systemctl start memcached
Postgres-Benutzer anlegen
[root@awx ~]# sudo -u postgres createuser -S awx could not change directory to "/root": Permission denied [root@awx ~]#
den Fehler ignorieren
Erstellen der Datenbank
[root@awx ~]# sudo -u postgres createdb -O awx awx could not change directory to "/root": Permission denied [root@awx ~]#
den Fehler ignorieren
Import der Daten in die Datenbank
[root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage migrate
Initialisierung der Konfiguration für AWX
[root@awx ~]# echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin', 'root@localhost', 'password')" | sudo -u awx /opt/awx/bin/awx-manage shell [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage create_preload_data Default organization added. Demo Credential, Inventory, and Job Template added. [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage provision_instance --hostname=$(hostname) Successfully registered instance awx.sunil.cc (changed: True) [root@awx ~]# sudo -u awx /opt/awx/bin/awx-manage register_queue --queuename=tower --hostnames=$(hostname) Creating instance group tower Added instance awx.sunil.cc to tower (changed: True) [root@awx ~]#
Nginx konfigurieren
Nehmen Sie das Backup von nginx.conf.
[root@awx ~]# cd /etc/nginx/ [root@awx nginx]# pwd /etc/nginx [root@awx nginx]# cp nginx.conf nginx.conf.bkp
Ersetzen Sie die nginx conf-Datei.
[root@awx nginx]# wget -O /etc/nginx/nginx.conf https://raw.githubusercontent.com/sunilsankar/awx-build/master/nginx.conf
Aktivieren und starten Sie den nginx-Dienst.
[root@awx ~]# systemctl start nginx [root@awx ~]# systemctl enable nginx
Starten Sie die awx-Dienste
[root@awx ~]# systemctl start awx-cbreceiver [root@awx ~]# systemctl start awx-celery-beat [root@awx ~]# systemctl start awx-celery-worker [root@awx ~]# systemctl start awx-channels-worker [root@awx ~]# systemctl start awx-daphne [root@awx ~]# systemctl start awx-web
Stellen Sie sicher, dass der Dienst beim Neustart gestartet wird.
[root@awx ~]# systemctl enable awx-cbreceiver Created symlink from /etc/systemd/system/multi-user.target.wants/awx-cbreceiver.service to /usr/lib/systemd/system/awx-cbreceiver.service. [root@awx ~]# systemctl enable awx-celery-beat Created symlink from /etc/systemd/system/multi-user.target.wants/awx-celery-beat.service to /usr/lib/systemd/system/awx-celery-beat.service. [root@awx ~]# systemctl enable awx-celery-worker Created symlink from /etc/systemd/system/multi-user.target.wants/awx-celery-worker.service to /usr/lib/systemd/system/awx-celery-worker.service. [root@awx ~]# systemctl enable awx-channels-worker Created symlink from /etc/systemd/system/multi-user.target.wants/awx-channels-worker.service to /usr/lib/systemd/system/awx-channels-worker.service. [root@awx ~]# systemctl enable awx-daphne Created symlink from /etc/systemd/system/multi-user.target.wants/awx-daphne.service to /usr/lib/systemd/system/awx-daphne.service. [root@awx ~]# systemctl enable awx-web Created symlink from /etc/systemd/system/multi-user.target.wants/awx-web.service to /usr/lib/systemd/system/awx-web.service. [root@awx ~]#
Konfigurieren Sie die passwortlose Anmeldung vom AWX-Server aus.
Erstellen Sie einen Benutzer auf allen 3 Hosts.
Hier in diesem Tutorial erstelle ich einen Benutzer. ansible auf allen 3 Servern.
[root@awx ~]# useradd ansible [root@client1 ~]# useradd ansible [root@clien2 ~]# useradd ansible
Generierung des ssh-Schlüssels im awx-Server
[root@awx nginx]# su - ansible [ansible@awx ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:RW/dhTsxcyGicleRI0LpLm+LyhAVinm0xktapodc8gY ansible@awx.sunil.cc The key's randomart image is: +---[RSA 2048]----+ | . . ..o. +ooo| | = o . +.oo+*.o| | E @ . ..oo.+ o*.| |. # o oo.. o | | = * S . | | o . . . | | . o | | o .o | | o..... | +----[SHA256]-----+ [ansible@awx ~]$
Hinzufügen des Sudoers-Eintrags auf allen 3 Servern als letzten Eintrag in die Datei
[root@awx nginx]# visudo ansible ALL=(ALL) NOPASSWD: ALL
Kopieren Sie den Inhalt von id_rsa.pub in authorized_keys auf allen 3 Servern.
[ansible@awx .ssh]$ cat id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@awx .ssh]$ [ansible@awx .ssh]$ cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@awx .ssh]$ chmod 600 authorized_keys
Kunde1
[root@client1 ~]# su - ansible [ansible@client1 ~]$ mkdir .ssh [ansible@client1 ~]$ chmod 700 .ssh [ansible@client1 ~]$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@client1 ~]$ chmod 600 .ssh/authorized_keys
Kunde2
[root@client2 ~]# su - ansible [ansible@client2 ~]$ mkdir .ssh [ansible@client2 ~]$ chmod 700 .ssh [ansible@client2 ~]$ cat .ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDStB8JGsVsSLppwYWdnEPLE4xwFqRDn7xE/d3hjBQ6A0JGm1t+GtHB3GPIEjANFTnxQwHpR+cRttbL3mlQvpIYqCZOMZds9XA7VI5qgs0aSGUU8cNYKjmmrMpJa9sB4WVtj3M4u2fEXt9FKKCtjMMpOfiQxIkEhYZ+2GoAX5sHXan7TPcgwb5r7WW6j43aaPc6g9XWN63nonQz6KeMSFZ/y0o2HJMh1FEkktZw6A1HVfn+JNWoQb1glyqGjO1ync+Sok8yXpqakEEWpXNQSQYs4eBEwfkKql5EuolQMIbF9VYhpEcR9LfbMvYdq/RPKWN3mmRMWfPZ2dTZl515XBdV ansible@awx.sunil.cc [ansible@client2 ~]$ chmod 600 .ssh/authorized_keys
Überprüfen Sie die passwortlose Anmeldung vom AWX-Server.
[ansible@awx ~]$ ssh client1 Last login: Sun Mar 11 13:14:06 2018 from 192.168.1.25 [ansible@client1 ~]$ exit logout Connection to client1 closed. [ansible@awx ~]$ ssh client2 Last login: Sun Mar 11 12:50:14 2018 from 192.168.1.25 [ansible@client2 ~]$
Bestätigen Sie die Anmeldung:
Die Login-Daten sind:
Benutzername: „admin“
Passwort: „password“ (Passwort)
Im nächsten Tutorial wird gezeigt, wie man ein Playbook hinzufügt und den Job ausführt.