Teil 4: Ansible Matthias P. Walther Freifunk Münsterland Förderverein freie Infrastruktur e. V. 26.07.2017
Wiederholung letzter Woche Gatewaydienste bird, kea Systemdienste starten / stoppen / neu laden
Inhaltsverzeichnis 1 Was ist Ansible 2 Konfiguration mit Ansible 3 Erste Schritte mit Ansible 4 Ausblick: Ansible-Rollen des Freifunk Münsterlands
Gateway konfigurieren Wie unter Linux üblich: 1 Paket installieren, ggfs. Paketquelle suchen 2 Konfigurationsdatei anpassen 3 Dienst starten
Die Installation erfolgt z. B. über: apt get i n s t a l l b i r d Konfiguration erfolgt über entsprechende Konfigurationsdatei: Listing 1: /etc/dhcp/dhcpd.conf d e f a u l t l e a s e time 3600; max l e a s e time 10800; a u t h o r i t a t i v e ; log f a c i l i t y l o c a l 7 ; subnet 1 0. 4 3. 8. 0 netmask 2 5 5. 2 5 5. 2 4 8. 0 { range 1 0. 4 3. 8. 2 6 1 0. 4 3. 9. 2 5 5 ; o p t i o n r o u t e r s 1 0. 4 3. 8. 2 ; o p t i o n domain name s e r v e r s 1 0. 4 3. 8. 2 ; o p t i o n i n t e r f a c e mtu 1280; }
Was ist Ansible
Was tut Ansible? Verwaltungstool, dass per SSH Server administrieren kann Installiert benötigte Pakete Generiert Konfigurationsdateien aus Vorlagen und Parametern Arbeitet ausschließlich über SSH
Konfiguration mit Ansible
Struktur und Arbeitsweise Ordner erstellen, der die auszurollende Konfiguration enthält hosts-datei listet verwaltete Server oder VMs auf Arbeitsabschnitte werden in Rollen gefasst roles yml-dateien sind die sogenannten Playbooks, die die Rollen gruppieren
Eine Ansible-Rolle Eine typische Ansible-Rolle besteht aus... einen Ordner, dessen Namen gleich dem Rollennamen ist, einem tasks -Ordner, der die main.yml beinhaltet, die wiederum die auszuführenden Anweisungen enthält, einem templates -Ordner, der Vorlagen mit Variablen enthalten kann (Jinja2), einem files -Ordner, der zu kopierende Dateien enthalten kann, und einem handlers -Ordner, Anweisungen am Ende durchführt, z. B. Dienste neu startet
Beispiel hosts -Datei [ s e r v i c e s ] s e r v i c e s a n s i b l e s s h h o s t =89.163.231.228 [ gateways ] greyworm 06 a n s i b l e s s h h o s t =89.163.129.14 remue 08 a n s i b l e s s h h o s t =148.251.208.175 des2 a n s i b l e s s h h o s t =5.9.180.43 parad0x a n s i b l e s s h h o s t =5.9.67.189 b a r r i s t a n a n s i b l e s s h h o s t =163.172.131.76 c1024 a n s i b l e s s h h o s t =176.9.88.123 f a n l i n a n s i b l e s s h h o s t =89.163.221.125 a u s r u f e r a n s i b l e s s h h o s t =163.172.211.238 rhe a n s i b l e s s h h o s t =46.105.252.246 des1 a n s i b l e s s h h o s t =5.9.86.154
Ordnerstruktur einer Rolle $ f i n d b i r d b i r d b i r d / t e m p l a t e s b i r d / t e m p l a t e s / b i r d. c o n f. j 2 b i r d / t e m p l a t e s / b i r d 6. c o n f. j 2 b i r d / h a n d l e r s b i r d / h a n d l e r s /main. yml b i r d / t a s k s b i r d / t a s k s /main. yml
Typische Aufgaben, die in der tasks/main.yml spezifiziert werden: Paketquelle hinzufügen name : Bird Repo h i n z u f u e g e n a p t r e p o s i t o r y : repo : deb h t t p : / / b i r d. network. cz / d e b i a n / j e s t a t e : p r e s e n t Auf Einrückung achten! Paket installieren name : B i r d i n s t a l l i e r e n apt : pkg : b i r d u p d a t e c a c h e : y e s s t a t e : i n s t a l l e d
Konfiguration generieren und kopieren name : c o n f i g u r e b i r d. c o n f t e m p l a t e : s r c=b i r d. c o n f. j 2 d e s t=/e t c / b i r d / b i r n o t i f y : r e s t a r t b i r d Immer wenn die bird.conf geändert wurde, wird bird am Ende neu gestartet. lineinfile: Stellt sicher, dass eine Datei eine bestimmte Zeile enthält Google und die Ansibledokumentation helfen einen Task für jede beliebige Aufgabe zu finden.
Variablen globale Variablen liegen in g r o u p v a r s / a l l Gruppenvariablen liegen in g r o u p v a r s /GRUPPENNAME Variablen für einen einzelnen Host liegen in h o s t v a r s /HOSTNAME
Beispiel Variablennutzung d h c p s t a r t : 1 0. 4 3. 8 5. 0 dhcp ende : 1 0. 4 3. 8 7. 2 5 4 Nutzung in der Vorlage: range {{ dhcp. r a n g e s t a r t }} {{ dhcp. r a n g e e n d } } ; Variablen, Listen, Dictionaries
Erste Schritte mit Ansible
Übungen Aufgabe 1 Melde dich auf root@schulung.ff-bor.de Port 2201 an. Erstelle einen Arbeitsordner gruppex. Erstelle eine Hostdatei mit dem Host root@schulung.ff-bor.de Port 220x, x: 2-10und der Gruppe ansibleschulung Aufgabe 2 Erstelle eine Rolle, die eine Datei mit dem Inhalt Hallo Welt auf den Host kopiert und führe sie aus. Kopiere die Datei in einem zweiten Schritt auf alle VMs, was muss dazu an der hosts-datei geändert werden?
Übungen II Aufgabe 3 Ändere die Willkommensmessage (/etc/motd) und integriere dabei deinen Namen als Variable, Beispiel: Willkommen auf dem Server inventory hostname! Im Namen von name heiße ich Sie willkommen. Wo muss die Variable definiert werden?
Ausblick: Ansible-Rollen des Freifunk Münsterlands
Falls noch Zeit bleibt, können wir die Ansible-Konfiguration des Freifunk-Münsterlands durchsprechen und durchgehen, was nötig ist, um ein eigenes Gateway aufzusetzen: https://github.com/freifunkmuenster/ansible-ffms
Vielen Dank für s Mitmachen! Fragen?