Automatisierte infrastruktur mit ansible

32
INFRASTRUKTUR MIT ANSIBLE ( ) 15. Januar 2014 bei der . Stephan Hochhaus @yauh OpenTechSchool Dortmund

description

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.

Transcript of Automatisierte infrastruktur mit ansible

Page 1: Automatisierte infrastruktur mit ansible

INFRASTRUKTUR MITANSIBLE

( ) 15. Januar 2014 bei der .Stephan Hochhaus @yauh OpenTechSchool Dortmund

Page 2: Automatisierte infrastruktur mit ansible
Page 3: Automatisierte infrastruktur mit ansible

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?

Page 4: Automatisierte infrastruktur mit ansible

MEIN LEBEN VOR ANSIBLE1. Grundsystem per Hand installieren2. Ggf. ausgefeilte shell-Skripte für Pakete ausführen3. Manuelles Anpassen von Konfigurationsdateien4. Fertiges System5. Ausprobieren von neuer Software/Konfiguration,

andere Entwickler auf dem Server/Tests6. Zerschießen des funktionierenden Systems

Page 5: Automatisierte infrastruktur mit ansible

GEEKS SIND GEWINNERTYPEN

Page 6: Automatisierte infrastruktur mit ansible

VORTEILE VON AUTOMATISIERUNGBeliebige (und leichte) WiederholbarkeitHohe Geschwindigkeit von DeploymentsWiederherstellen von bekannten ZuständenKeine tiefen Systemkenntnisse notwendig

Page 7: Automatisierte infrastruktur mit ansible

UND GANZ KONKRETSchneller Aufbau von TestsystemenLeichter ProviderwechselContinuous-Integration-Workflows realisieren"Zerschossene" Systeme wiederherstellen

Page 8: Automatisierte infrastruktur mit ansible

WIESO NICHT SHELL/PERL-SKRIPTE?Skripte werden schnell extrem komplexIdempotenz - Unabhängig vom Ausgangszustand wird eindefinierter Endzustand hergestellt(mehrfache Ausführung möglich)Bessere Übersichtlichkeit und Struktur durch AbstraktionPortabilität (z.B. verschiedene Linux Distros)Deklarativer Ansatz erlaubt höhere Produktivität alsimperatives Vorgehen(wie soll das Ergebnis aussehen vs. was soll getan werden)Teilen von Playbooks mit Community

Page 9: Automatisierte infrastruktur mit ansible

CONFIGURATION MANAGEMENT 2014

Stand: 13. Januar 2014 auf github

Page 10: Automatisierte infrastruktur mit ansible

Leistungsfähige automation engine aus Basis von PlaybooksKeine Agents auf Zielsystemen notwendig(SSH-Zugriff reicht)Standardmäßig push-Architektur, pull möglichKeine Programmierkenntnisse notwendig(statt dessen YAML und Jinja2)Aber funktional erweiterbar in beliebigenProgrammiersprachenKein Management von Windows oder Mac OS XIntegration in Amazon EC2, Rackspace, OpenStack, VMWare,Vagrant, u.a.AWX (Web-GUI)

Page 11: Automatisierte infrastruktur mit ansible

ARCHITEKTURÜBERBLICK

Page 12: Automatisierte infrastruktur mit ansible

KERNBESTANDTEILE VON ANSIBLEInventory - Beschreibt die InfrastrukturModule - Stellen Funktionen zur VerfügungPlaybooks - Führen Aktionen in Infrastruktur durch

Page 13: Automatisierte infrastruktur mit ansible

INVENTORYHosts - Zielsysteme (Linux)Gruppen Organisatorische Zuordnung (z.B. geografisch, nachFunktion oder als Mischung)

Page 14: Automatisierte infrastruktur mit ansible

BEISPIEL HOSTS-DATEI[webserver]apache.example.orglamp.example.org

[dbserver]db.example.orglamp.example.org

[test]lamp.example.org

[production]apache.example.orgdb.example.org

INI-Format

Page 15: Automatisierte infrastruktur mit ansible

ES GIBT MODULE FÜRMonitoring Net Infrastructure NetworkNotification Packaging Source ControlSystem Utilities Web InfrastructureCloud Commands DatabaseFiles Internal InventoryMessaging

Page 16: Automatisierte infrastruktur mit ansible

SYSTEM: PING

Page 17: Automatisierte infrastruktur mit ansible

EIGENE MODULEEigene Module können in Python oder einer beliebigen anderen

Programmiersprache(!) verfasst sein.

Page 18: Automatisierte infrastruktur mit ansible

PLAYBOOKSPlaybooks sind deklarative Beschreibungen in YAML(Leerzeichen sind wichtig!)Tasks beschreiben den gewünschten ZustandKönnen Variablen und Schleifen verwendenTemplates und Dateien lassen sich nutzen

Page 19: Automatisierte infrastruktur mit ansible

NUTZER ANLEGEN UND LÖSCHEN---- hosts: all user: root

tasks: # Add the user 'kaylee' with a primary group of 'admin' - user: name=kaylee comment="Kaywinnet Lee Frye" group=user

# Create a 2048-bit SSH key for user kaylee - user: name=kaylee generate_ssh_key=yes ssh_key_bits=2048

# Remove the user 'kaylee' - user: name=kaylee state=absent remove=yes

Page 20: Automatisierte infrastruktur mit ansible

PLAY IT!

Page 21: Automatisierte infrastruktur mit ansible

VARIABLEN FÜR TASKSTasks können Variablen nutzen

---- hosts: all user: root

vars: user: stephan user_pwd: $1$$$UMYDU6b06auQqgJWoSx2.1

tasks: - name: "Init | Set up an account" user: name={{ user }} password={{ user_pwd }} shell=/bin/bash

Page 22: Automatisierte infrastruktur mit ansible

SCHLEIFEN MIT ITEMtasks: - name: "Init | Some software should be installed" action: apt pkg={{ item }} state=latest with_items: - sudo - openssh-server - ssh

Page 23: Automatisierte infrastruktur mit ansible

TEMPLATES UND DATEIENDas Template-Modul erlaubt dynamische Anpassungen anKonfig-DateienMit Copy lassen sich Dateien 1:1 kopierentemplate: src=templates/msmtprc.j2 dest=/etc/msmtprccopy: src=templates/backup.sh dest=/usr/local/bin/backup.sh

Page 24: Automatisierte infrastruktur mit ansible

VARIABLEN IN TEMPLATESJinja2 als Template-Sprache

my.cnf.j2

[client]user=rootpassword={{ mysql.root_password }}

Page 25: Automatisierte infrastruktur mit ansible

HANDLERSVerhalten sich ähnlich zu Tasks

handlers: - name: restart mysql action: service name=mysql state=restarted

Page 26: Automatisierte infrastruktur mit ansible

TAGS UND ROLESTags bündeln Tasks und lassen sich gezielt ausführenRoles erlauben höhere Modularität in Playbooks

tasks: - name: LAMP should be installed action: apt pkg={{ item }} state=latest with_items: - apache2 - mysql - php5 tags: lamp

Page 27: Automatisierte infrastruktur mit ansible

ANSIBLE INSTALLIERENMAC OS X

LINUX$ brew install ansible

$ pip install pyyaml jinja2 paramiko$ pip install ansible

Page 28: Automatisierte infrastruktur mit ansible

BEI BEDARF AUCH MIT GUI

Bis zu 10 Hosts lassen sich kostenlos mit managen.AWX

Page 29: Automatisierte infrastruktur mit ansible

WEITERE RESSOURCEN - Die Webseite von Ansible

- Plattform für AnsiblePlaybooks/Roles

- Generelle Infos

ansibleworks.comgalaxy.ansibleworks.com

Configuration Management 101

Page 30: Automatisierte infrastruktur mit ansible

ALTERNATIVENEs gibt eine Vielzahl von Tools für

automatisiertes Configuration Management:

AnsiblePuppetChefcfenginesalt

Page 31: Automatisierte infrastruktur mit ansible

AUTOMATE ALL THE THINGS

Page 32: Automatisierte infrastruktur mit ansible

Ich blogge unter ,tweete als ,

+1 als und pushe als .

FORK ME!yauh.de

@yauhStephanHochhaus

perlmonkey