E-Book, Deutsch, 496 Seiten
Reihe: Rheinwerk Computing
Miesen Ansible
3. Auflage 2025
ISBN: 978-3-367-10371-3
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Das Praxisbuch für Administratoren und DevOps-Teams
E-Book, Deutsch, 496 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-10371-3
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Wenn Sie auf Ihrer Serverfarm für Ordnung sorgen wollen, ist Ansible das Werkzeug der Wahl. Dieses Praxisbuch zeigt Ihnen, wie Sie das automatisierte Deployment Ihrer Dienste orchestrieren und so für standardisierte und dokumentierte Abläufe sorgen. Diese zentrale Konfiguration erleichtert Ihnen Betrieb und Skalierung, da Sie durch die konsequente Automatisierung Fehlerquellen reduzieren.
Aus dem Inhalt:
- Basiseinrichtung und Inventory Management
- Ad-hoc-Kommandos und Patterns
- YAML: die Konfigurations- und Serialisierungssprache
- Playbooks, Tasks und Plays
- Modularisierung mit Rollen und Includes
- Die Modul-Bibliothek
- Webinterfaces: Ansible AWX/Tower und mehr
- Ansible und Docker
- Callback Plugins
- Beispielkonfigurationen und Best Practices
Axel Miesen ist zertifizierter Linux-Systemadministrator und Trainer. Seit 2001 hat er zahlreichen Schulungen zu Themen wie Linux-Shellscripting, Perl, Docker und Ansible durchgeführt.
Autoren/Hrsg.
Weitere Infos & Material
3.4 Setup/Laborumgebung
Sie haben dieses Buch erworben, um sich mit Ansible vertraut zu machen. Der bewährte Weg dazu ist Learning by Doing, d. h., Sie sollten die für Sie relevanten Beispiele und Vorgehensweisen in der Praxis nachvollziehen. Idealerweise steht Ihnen dazu eine Test- bzw. Laborumgebung zur Verfügung, deren Wunschausstattung ich nun beschreiben möchte.
Zunächst einmal benötigen Sie irgendeinen UNIX-artigen Host, auf dem die Ansible-Software installiert wird (den sogenannten Control Host oder auch die Control Machine). Jede gängige halbwegs aktuelle Linux-Distribution ist dazu geeignet, aber es ginge auch mit macOS, Solaris etc. Eine native Windows-Version von Ansible gibt es nicht; über Umwege (z. B. Cygwin) kann man es aber durchaus auch auf Windows zum Laufen bringen. Bitte sehen Sie jedoch an dieser Stelle unbedingt davon ab, da zu viele Tricks und Kniffe nötig wären.
Außerdem benötigen Sie noch mindestens einen zusätzlichen Host, der via Ansible administriert werden soll (einen sogenannten Target Host oder Managed Node). Am Anfang werden wir hier Linux-Systeme voraussetzen; sehr viel später werden Sie sehen, dass man z. B. auch Windows-Systeme, Netzwerk-Devices oder Cloud-Umgebungen mit Ansible administrieren kann. Die wichtigste Voraussetzung an dieser Stelle ist, dass der Control Host seine Target Hosts (im Fall von Linux) über SSH erreichen kann.
Nun kann ich natürlich nicht wissen, wie Ihre Arbeits- bzw. Testumgebung aussieht. Vielleicht ist Ihr Arbeitsplatzrechner seit Langem ein Linux-System, und Sie haben bereits letzte Woche drei vServer in der Cloud angemietet – womit Sie eigentlich direkt loslegen könnten. Möglicherweise ist aber auch nichts von alledem der Fall.
Die für dieses Buch vorgeschlagene hauptsächliche Testumgebung sehen Sie in Abbildung 3.1. Ich zeige Ihnen auch sogleich, wie Sie zu einer solchen Umgebung gelangen können, sofern Sie nicht in Eigenregie eine aufbauen möchten.
Die Software Vagrant eignet sich hervorragend, um eine virtuelle Testumgebung bereitzustellen. Das Produkt setzt lediglich eine übliche Virtualisierungslösung voraus (z. B. VirtualBox, VMware, HyperV) und kann dann mittels einer Beschreibungsdatei (dem Vagrantfile) eine definierte Menge von virtuellen Maschinen provisionieren. Ich gehe an dieser Stelle einmal von VirtualBox als Virtualisierer aus. Die benötigte Software bekommen Sie hier:
-
Vagrant (https://www.vagrantup.com)
-
VirtualBox (https://www.virtualbox.org)
Abbildung 3.1 Unser Beispiel-Setup
Wichtig
Zum Zeitpunkt des Entstehens dieser Zeilen ist die VirtualBox-Version 7.1 verfügbar, die aber von der derzeit aktuellen Vagrant-Version noch nicht unterstützt wird. Wahrscheinlich sind diese Probleme bald behoben; aber wenn Sie hier nicht experimentierfreudig sind, rate ich einfach zur Verwendung der VirtualBox-Version 7.0.
Auf der VirtualBox-Download-Seite finden Sie rechts unten einen Link Previous Releases (https://www.virtualbox.org/wiki/Download_Old_Builds). Auf der darauffolgenden Seite wählen Sie dann einfach die 7.0er-Version und laden so das für Ihr System geeignete aktuellste 7.0er-Release herunter.
Wenn diese zwei Virtualisierungswerkzeuge nun auf Ihrem System zur Verfügung stehen, können wir uns der Erstellung der virtuellen Testsysteme zuwenden. Listing 3.1 zeigt ein Vagrantfile, das Sie dazu bitte einfach in irgendeinem neuen Verzeichnis ablegen:
# Please adjust if necessary:
#
NETWORK_PREFIX = "192.168.150"
Vagrant.configure("2") do |config|
# Set default RAM size for all boxes:
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
config.vm.define "ansible" do |ansible|
ansible.vm.box = "bento/debian-12"
ansible.vm.hostname = "ansible"
ansible.vm.network :private_network, ip: "#{NETWORK_PREFIX}.100"
end
config.vm.define "debian" do |debian|
debian.vm.box = "bento/debian-12"
debian.vm.hostname = "debian"
debian.vm.network :private_network, ip: "#{NETWORK_PREFIX}.10"
end
config.vm.define "rocky" do |rocky|
rocky.vm.box = "bento/rockylinux-9"
rocky.vm.hostname = "rocky"
rocky.vm.network :private_network, ip: "#{NETWORK_PREFIX}.20"
end
config.vm.define "suse" do |suse|
suse.vm.box = "bento/opensuse-leap-15"
suse.vm.hostname = "suse"
suse.vm.network :private_network, ip: "#{NETWORK_PREFIX}.30"
end
config.vm.define "ubuntu" do |ubuntu|
ubuntu.vm.box = "bento/ubuntu-24.04"
ubuntu.vm.hostname = "ubuntu"
ubuntu.vm.network :private_network, ip: "#{NETWORK_PREFIX}.40"
end
end
Listing 3.1 »Vagrantfile«: Provisionierung der Testumgebung
Diese Datei definiert die in Abbildung 3.1 gezeigten fünf Maschinen. Allerdings müssen Sie für Ihre Umgebung vorher noch etwas erledigen:
-
Legen Sie in der VirtualBox-Applikation ein neues Host-only-Netzwerk an.
Das können Sie bequem mithilfe von Datei • Werkzeuge • Netzwerk-Manager erledigen. Dort klicken Sie auf Erzeugen, merken sich dann die IPv4-Adresse oder passen sie nach Ihren eigenen Vorstellungen an.
Im Buch nutze ich exemplarisch:
IPv4-Adresse: 192.168.150.1/24Wenn nichts dagegenspricht, wäre es durchaus sinnvoll, wenn Sie dieser Vorgabe folgen. Ansonsten müssen Sie später ggf. einige wenige Beispieldateien anpassen, was aber sicher auch kein Problem darstellt.
Den DHCP-Server dieses neuen Netzwerks setzen Sie bitte auf deaktiviert. Wir brauchen ihn nicht und wollen auch nicht riskieren, dass er uns irgendwie »dazwischenfunkt«:
DHCP-Server: deaktiviertFalls Sie VirtualBox unter Linux betreiben: Per Default ist keine beliebige Wahl von Host-only-Netzwerkadressen möglich. Sie müssen das als Root zunächst erlauben, indem Sie eine Datei /etc/vbox/networks.conf mit folgendem Inhalt erzeugen:
* 0.0.0.0/0 ::/0Listing 3.2 »/etc/vbox/networks.conf«: beliebige Netzwerke unter Linux erlauben
Gegebenenfalls müssen Sie danach die VirtualBox-App einmal schließen und wieder öffnen.
-
Gleichen Sie nun das NETWORK_PREFIX im Vagrantfile (falls nötig) mit Ihrer VirtualBox-Konfiguration ab.
Die virtuellen Maschinen werden mit 1 GByte RAM pro Stück provisioniert. In der Summe benötigt unser Setup also zunächst maximal 5 GByte RAM, real gemessen sicher aber etwas weniger. Wenn Ihr Hostsystem diese Größenordnung an Hauptspeicher nicht hergibt, müssten Sie den einen oder anderen Target Host einfach weglassen (was jedoch schade wäre, da spätere Beispiele mit all diesen Hosts arbeiten).
Nach dieser Vorbereitung können Sie das ganze Szenario nun online bringen. Wechseln Sie dazu in der Kommandozeilenumgebung in das Verzeichnis, in dem Sie das Vagrantfile abgelegt haben, und geben Sie dort Folgendes ein:
Nach einiger Wartezeit sollten alle Maschinen laufen und entsprechend ihren konfigurierten IP-Adressen an-ping-bar sein:
$ ping 192.168.150.10
$ ping 192.168.150.20
[…]
Sie können sich nun beispielsweise am Control Host anmelden; falls Sie unter Windows arbeiten, können Sie gern eine gewohnte Software wie PuTTY dazu verwenden. Username und Passwort sind jeweils vagrant. Die Vagrant-Software bietet selbst auch einen bequemen Weg zur Anmeldung:
vagrant@ansible:~$ exit
Anmerkung
Der vagrant-Useraccount hat per Default uneingeschränkte sudo-Rechte. Wenn Sie also Root-Rechte benötigen, setzen Sie einfach sudo vor Ihr Kommando, oder Sie nehmen sich bei Bedarf eine dauerhafte Root-Shell mittels sudo -i.
Und bevor wir das Thema Vagrant wieder verlassen – Tabelle 3.1 zeigt noch eine Übersicht der allerwichtigsten Vagrant-Kommandos:
Befehl | Wirkung |
---|