Ansible hilft bei der Automatisierung des Configuration Managements. Welche Vorteile Ansible gegenüber manueller Installation bietet und auf welchen Grundprinzipien es aufbaut beschreibt dieser Talk.
Gehalten am 15.01.2014 bei der OpenTechSchool Dortmund.
3. WIE SIEHT EURE IT-INFRASTRUKTUR AUS?
Wer hat einen eigenen (Web-)Server?
Welches Betriebssystem?
Wie viele Server sind es?
Wie oft setzt ihr sie neu auf?
Wie lange dauert das Aufsetzen?
Wer hat schonmal ein Tutorial verfasst?
4. MEIN LEBEN VOR ANSIBLE
1.
2.
3.
4.
5.
Grundsystem per Hand installieren
Ggf. ausgefeilte shell-Skripte für Pakete ausführen
Manuelles Anpassen von Konfigurationsdateien
Fertiges System
Ausprobieren von neuer Software/Konfiguration,
andere Entwickler auf dem Server/Tests
6. Zerschießen des funktionierenden Systems
6. VORTEILE VON AUTOMATISIERUNG
Beliebige (und leichte) Wiederholbarkeit
Hohe Geschwindigkeit von Deployments
Wiederherstellen von bekannten Zuständen
Keine tiefen Systemkenntnisse notwendig
7. UND GANZ KONKRET
Schneller Aufbau von Testsystemen
Leichter Providerwechsel
Continuous-Integration-Workflows realisieren
"Zerschossene" Systeme wiederherstellen
8. WIESO NICHT SHELL/PERL-SKRIPTE?
Skripte werden schnell extrem komplex
Idempotenz - Unabhängig vom Ausgangszustand wird ein
definierter Endzustand hergestellt
(mehrfache Ausführung möglich)
Bessere Übersichtlichkeit und Struktur durch Abstraktion
Portabilität (z.B. verschiedene Linux Distros)
Deklarativer Ansatz erlaubt höhere Produktivität als
imperatives Vorgehen
(wie soll das Ergebnis aussehen vs. was soll getan werden)
Teilen von Playbooks mit Community
10. Leistungsfähige automation engine aus Basis von Playbooks
Keine Agents auf Zielsystemen notwendig
(SSH-Zugriff reicht)
Standardmäßig push-Architektur, pull möglich
Keine Programmierkenntnisse notwendig
(statt dessen YAML und Jinja2)
Aber funktional erweiterbar in beliebigen
Programmiersprachen
Kein Management von Windows oder Mac OS X
Integration in Amazon EC2, Rackspace, OpenStack, VMWare,
Vagrant, u.a.
AWX (Web-GUI)
12. KERNBESTANDTEILE VON ANSIBLE
Inventory - Beschreibt die Infrastruktur
Module - Stellen Funktionen zur Verfügung
Playbooks - Führen Aktionen in Infrastruktur durch
13. INVENTORY
Hosts - Zielsysteme (Linux)
Gruppen Organisatorische Zuordnung (z.B. geografisch, nach
Funktion oder als Mischung)
15. ES GIBT MODULE FÜR
Monitoring
Notification
System
Cloud
Files
Messaging
Net Infrastructure
Packaging
Utilities
Commands
Internal
Network
Source Control
Web Infrastructure
Database
Inventory
17. EIGENE MODULE
Eigene Module können in Python oder einer beliebigen anderen
Programmiersprache(!) verfasst sein.
18. PLAYBOOKS
Playbooks sind deklarative Beschreibungen in YAML
(Leerzeichen sind wichtig!)
Tasks beschreiben den gewünschten Zustand
Können Variablen und Schleifen verwenden
Templates und Dateien lassen sich nutzen
19. NUTZER ANLEGEN UND LÖSCHEN
--hss al
ot: l
ue:ro
sr ot
tss
ak:
#Adteue 'ale wt apiaygopo 'di'
d h sr kye' ih
rmr ru f amn
-ue:nm=alecmet"awne LeFy"gopue
sr aekye omn=Kyint e re ru=sr
#Cet a24-i SHkyfrue kye
rae
08bt S e o sr ale
-ue:nm=alegnrt_s_e=e shkybt=08
sr aekye eeaeshkyys s_e_is24
#Rmv teue 'ale
eoe h sr kye'
-ue:nm=alesaeasn rmv=e
sr aekye tt=bet eoeys
21. VARIABLEN FÜR TASKS
Tasks können Variablen nutzen
--hss al
ot: l
ue:ro
sr ot
vr:
as
ue:sehn
sr tpa
ue_w:$$$MD60aQgWS21
srpd 1$UYUb6uqJox.
tss
ak:
-nm:"nt|Stu a acut
ae Ii
e p n con"
ue:nm={ue } pswr={ue_w } sel/i/ah
sr ae{ sr } asod{ srpd } hl=bnbs
22. SCHLEIFEN MIT ITEM
tss
ak:
-nm:"nt|Sm sfwr sol b isald
ae Ii
oe otae hud e ntle"
ato:atpg{ ie } saelts
cin p k={ tm } tt=aet
wt_tm:
ihies
-sd
uo
-oeshsre
pns-evr
-sh
s
23. TEMPLATES UND DATEIEN
Das Template-Modul erlaubt dynamische Anpassungen an
Konfig-Dateien
Mit Copy lassen sich Dateien 1:1 kopieren
tmlt:sctmltsmmpcj ds=ecmmpc
epae r=epae/str.2 et/t/str
cp:sctmltsbcu.hds=urlclbnbcu.h
oy r=epae/akps et/s/oa/i/akps
24. VARIABLEN IN TEMPLATES
Jinja2 als Template-Sprache
[let
cin]
ue=ot
srro
pswr={mslro_asod}
asod{ yq.otpswr }
my.cnf.j2
26. TAGS UND ROLES
Tags bündeln Tasks und lassen sich gezielt ausführen
Roles erlauben höhere Modularität in Playbooks
tss
ak:
-nm:LM sol b isald
ae AP hud e ntle
ato:atpg{ ie } saelts
cin p k={ tm } tt=aet
wt_tm:
ihies
-aah2
pce
-msl
yq
-pp
h5
tg:lm
as ap
27. ANSIBLE INSTALLIEREN
MAC OS X
$be isalasbe
rw ntl nil
LINUX
$ppisalpym jna prmk
i ntl yal ij2 aaio
$ppisalasbe
i ntl nil
28. BEI BEDARF AUCH MIT GUI
Bis zu 10 Hosts lassen sich kostenlos mit AWX managen.
29. WEITERE RESSOURCEN
ansibleworks.com - Die Webseite von Ansible
galaxy.ansibleworks.com - Plattform für Ansible
Playbooks/Roles
Configuration Management 101 - Generelle Infos
30. ALTERNATIVEN
Es gibt eine Vielzahl von Tools für
automatisiertes Configuration Management:
Ansible
Puppet
Chef
cfengine
salt