Ansible Teil 6 – Installation und Ersteinrichtung + Foreman (CentOS)

In meiner bisherigen Reihe zum Thema Ansible, bin ich stets auf die Installation, Konfiguration und Erweiterung auf einem Ubuntu-Server eingegangen. Um nun auch eine Anleitung für CentOS zu bieten, soll dieser Beitrag ein Leitfaden sein. Genauer gesagt, beziehe ich mich auf die CentOS Version 8 Stram (rolling release), sodass eine entsprechende Vorinstallation des Betriebssystems vorausgesetzt ist.

Installation und Ersteinrichtung von Ansible

Sorgt zunächst dafür, dass euer Server stets dieselbe IP-Adresse erhält. Entweder über eine fix gesetzte IP-Adresse in der Netzwerkkonfiguration oder (wie in meinem Fall) einem DHCP-Server, der stets dieselbe IP vergibt.

Installiert dann Ansible folgendermaßen:

sudo yum install epel-release
sudo yum install ansible

Um im Anschluß eine vollständige Konfigurationsdatei von Ansible zu erzeugen, ist uns der folgende Befehl dienlich:

ansible-config init --disabled -t all > /etc/ansible/ansible.cfg

Um hinterher bei der Ausführung der Playbooks Fehler zu vermeiden, editieren wir diese neue ansible.cfg-Datei …

nano /etc/ansible/ansible.cfg

… suchen innerhalb der Punktes [ssh_connection] die Zeile ;host_key_checking=True und setzen diese auf …

[ssh_connection]
...
host_key_checking=False

Damit Ansible automatisiert arbeiten kann, benötigen wir ein SSH-Schlüsselpaar (generiert als root-Benutzer) und legen dieses auf die jeweilige Zielmaschine ab. Zunächst werden wir zu root und erstellen wir ein passwortloses SSH-Schlüsselpaar unter dem Standardpfad /root/.ssh/id_rsa.pub.

sudo su -
ssh-keygen

Nun muss der eben erzeugte Public-Key auf die Maschine abgelegt werden. Standardmäßig liegt dieser unter /root/.ssh/id_rsa.pub. Dessen Inhalt wird auf der Zielmaschine unter …

/root/.ssh/authorized_keys

… abgelegt.
Für gewöhnlich werden die Zielmaschinen in Gruppen inventarisiert und liegen in dieser Datei:

nano /etc/ansible/hosts

Um eine erste Maschine hinzuzufügen wird in der letzten Zeile folgender Zweizeiler angefügt:

[linux]
ubuntu-computer.fritz.box

Wichtig ist, dass die Hosts mit ihrem FQDN ausgeschrieben werden, da es auf der Foreman-Oberfläche hinterher sonst zu mehrfachen Einträgen der Hosts kommen kann. Passt die Namen der Gruppe und des Hosts entsprechend eurer eigenen Infrastruktur an. Alternativ lassen sich auch IP-Adressen anstelle des Hostnamens verwenden.
Um die Einrichtung bis dahin zu testen, lässt sich das Ping-Modul nutzen:

ansible all -m ping
So sähe ein erfolgreicher Verbindungsversuch aus.

Foreman Installation

Für die Foreman Installation in der Version 3.1 wird den Repositories zunächst eine aktuelle Version von Puppet hinzugefügt.

sudo yum -y install https://yum.puppet.com/puppet6-release-el-8.noarch.rpm

Anschließend wird Ruby installiert.

sudo dnf module reset ruby
sudo dnf module enable ruby:2.7

Es fehlt nun nur noch das Foreman-Repository …

sudo yum -y install https://yum.theforeman.org/releases/3.1/el8/x86_64/foreman-release.rpm

… mit dem anschließend anschließend der foreman-installer installiert wird:

sudo yum -y install foreman-installer

Wichtig ist vor der Ausführung des foreman-installers, dass unser Ansible-/ bzw. Foreman-Server einen FQDN gesetzt hat, da sonst der Prozess abbricht.
Dies kann beispielsweise folgendermaßen durchgeführt werden:

sudo hostnamectl set-hostname centos-server.fritz.box

Der Foreman-Installer übernimmt ab hier die Installationsroutine für uns:

sudo foreman-installer

Sollte der Fehler Forward DNS points to … which is not configured on this server erscheinen, fehlt noch eine Namensauflösung in der /etc/hosts mit dem Localhost und dem Hostnamen (ergänzt im folgenden Beispiel den Namen eures Servers mit dem unten aufgeführten):

nano /etc/hosts

127.0.0.1   centos-server.fritz.box centos-server

Sollte die Installation in Fehler laufen, lassen sich diese korrigieren und die Routine erneut starten.
Nach erfolgreichem Abschluß, wird uns die Foreman Adresse samt Login-Informationen präsentiert:

Die hier angezeigte Adresse https://centos-server.fritz.box führt zur nun aktiven Foreman-Oberfläche. Testweise kann sie einmal geöffnet werden.
Sollte es dabei zu Problemen kommen, müsste ggf. noch die Firewall angepasst werden:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload
Die Anmeldeinformationen sind dem Terminal zu entnehmen, die nach der foreman-installer Routine angezeigt werden.

Möchten wir, dass Ansible die Aufnahme der Hosts in die Foreman Oberfläche für uns übernimmt, so editieren wir noch die ansible.cfg und schalten innerhalb der Kategorie [defaults] die callback_whitelist Methode auf foreman um:

nano /etc/ansible/ansible.cfg

### Innerhalb der Kategorie [defaults]
[defaults]
callback_whitelist = foreman

Außerdem erstellen wir eine weitere Kategorie, die wir innerhalb derselben Datei am Ende einfügen und dort die URL, das Zertifikat vom kürzlich dazu installierten Puppetserver, dem Private Key vom Puppetserver und das Zertifikat der Zertifizierungsstelle vom Puppetserver angeben:

[callback_foreman]
url = 'https://centos-server.fritz.box'
ssl_cert = /etc/puppetlabs/puppet/ssl/certs/centos-server.fritz.box.pem
ssl_key = /etc/puppetlabs/puppet/ssl/private_keys/centos-server.fritz.box.pem
verify_certs = /etc/puppetlabs/puppet/ssl/certs/ca.pem

Auch hier ändert ihr die Namen der Zertifikate und Ablageorte entsprechend eurem Setup.
Als letztes wird noch das Python Modul Requests benötigt.

sudo yum install python39-requests

Und damit wäre die Installation auf einem CentOS vollständig und geglückt!

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen