
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 ansibleUm 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.cfgUm 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=FalseDamit 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-keygenNun 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/hostsUm eine erste Maschine hinzuzufügen wird in der letzten Zeile folgender Zweizeiler angefügt:
[linux]
ubuntu-computer.fritz.boxWichtig 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
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.rpmAnschließend wird Ruby installiert.
sudo dnf module reset ruby
sudo dnf module enable ruby:2.7Es 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-installerWichtig 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.boxDer Foreman-Installer übernimmt ab hier die Installationsroutine für uns:
sudo foreman-installerSollte 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-serverSollte 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
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 = foremanAuß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.pemAuch 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-requestsUnd damit wäre die Installation auf einem CentOS vollständig und geglückt!
