Devops ohne root
Transcript of Devops ohne root
DevOps ohne rootAnwendungen reproduzierbar für Managed Server konfigurieren
Peter Hormanns cusy GmbH Vortrag auf dem Linuxday Dornbirn am 21. Nov. 2015
Peter Hormanns• Freiberufler, Software-Consultant
• Technologie-Stack: Java und Linux
• heute nennt man „DevOps", was ich seit 20 Jahren tue ;-)
• tätig für die cusy GmbH
you + me + cusy
you + me + cusy
Agenda
• you + me + cusy
• Cloud + Managed Server
• Configuration Management mit Ansible
• praktische Beispiele
• Zusammenfassung und Diskussion
you + me + cusy
Angebot der cusy GmbH »Gute« Anwendungen zu einer gehosteten* Arbeitsumgebungfür Teams kombinieren. *) nach deutschen Datenschutzstandards in einem zertifizierten Rechenzentrum in Deutschland !
!
Alternative zur Cloud
Kapitelyou + me + cusy
SaaS
PaaS
IaaS
cusy-Dienste
Managed-Server
(root-Server)
»Cloud« Datenschutz konformes Hosting
Managed Server
• Bootstrap neuer Virtueller Maschinen • Backup • Sicherheits-Updates für das Betriebssystem • Storage • Vorhalten von Ressourcen
Cloud + Managed Server
Arbeitsteilung – Hoster
• Managed Plattform • Betriebssystem • Hardware • Netzwerk • Backup
Cloud + Managed Server
Arbeitsteilung – cusy
• cusy Dienste • Gitblit – Git-Hosting mit Browser-Oberfläche, wie Github • OpenProject – Multiprojekt-Management, Redmine-Fork • Jenkins – Continuous Integration Server • Sentry – zentrale Log-Auswertung • Jira – Atlassian Projekt-Verwaltung / Issue Tracking • Confluence – Enterprise Wiki
Cloud + Managed Server
Motivation
Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufriedenzustellen.
(Erstes Prinzip des agilen Manifests)
Cloud + Managed Server
» «
Motivation
Einfachheit – die Kunst, die Menge nicht getaner Arbeit zu maximieren – ist essenziell.
(Achtes Prinzip des agilen Manifests)
Cloud + Managed Server
» «
Ansible-Steckbrief
• Automatisierung • Configuration Management • Service Orchestration • Dokumentation
Configuration Management mit Ansible
Ansible-Eigenschaften
• Push über ssh (kein Agent) • YAML Syntax für Playbooks • Jinja Template Engine • Idempotenz • Deklarativ
Configuration Management mit Ansible
Für unseren Anwendungsfall ist Ansible die naheliegende Lösung.
vs vs vs vs
Configuration Management mit Ansible
Einfaches Playbook
1 --- 2 - hosts: wordpress 3 vars: 4 version: 4.0 5 tasks: 6 - name: extract tarball 7 sudo: yes 8 sudo_user: "{{user}}" 9 unarchive: > 10 copy=no src="/tmp/wordpress.tgz" 11 dest="/home/{{user}}/wordpress/" … ↓
Praktische Beispiele
Einfaches Playbook
… 12 - name: move to www 13 sudo: yes 14 sudo_user: "{{pac}}-{{user}}" 15 command: > 16 rm -rf www && mv wordpress www 17 chdir="/home/{{user}}/wordpress" 18 - name: upload wp-config.php config 19 sudo: yes 20 sudo_user: "{{pac}}" 21 template: > 22 src="templates/wordpress/wp-config.php" 23 mode=0600 24 dest="/home/{{user}}/wordpress/www/wp-config.php"
Praktische Beispiele
Ansible-Begriffe: Playbook
• Beschreibung eines Soll-Zustands der Infrastruktur
Praktische Beispiele
Ansible-Begriffe: Playbook
• Beschreibung eines Soll-Zustands der Infrastruktur • User anlegen • Domain aufschalten • Datenbank anlegen
eigene Module !
siehe Repository auf Github
Praktische Beispiele
Ansible-Begriffe: Module
• ca. 130 Module in Core • ca. 270 "Extra" Module • eigene Module in jeder Programmier- oder Skript-
Sprache möglich
Praktische Beispiele
Ansible-Begriffe: Inventory
[appserver] apps01.example.com apps02.example.com apps03.example.com ![frontend] www.example.com ansible_sudo_user=haproxy ![appserver:vars] frontend=www.example.com ansible_sudo_user=tomcat7
Praktische Beispiele
Ansible-Begriffe: Inventory
Dynamisches Inventory
./dyn-inv --list ! 1 { 2 "appserver" : [ "apps01.example.com" , "apps02.example.com" ], 3 "frontend" : [ "www.example.com" ] 4 }
Praktische Beispiele
Ansible-Begriffe: Inventory
Dynamisches Inventory
./dyn-inv --host apps01.example.com ! 1 { 2 "frontend" : "www.example.com", 3 "ansible_sudo_user" : "tomcat7" 4 }
Praktische Beispiele
Ansible-Begriffe: Variablen
• im Inventory • in Playbooks • aus inkludierten Dateien • von der Kommandozeile
Praktische Beispiele
Ansible-Begriffe: Rollen und Handlerroles/gitblit/ roles/gitblit/files roles/gitblit/files/cusy120x45.png roles/gitblit/handlers roles/gitblit/handlers/main.yml roles/gitblit/meta roles/gitblit/meta/main.yml roles/gitblit/tasks roles/gitblit/tasks/main.yml roles/gitblit/templates roles/gitblit/templates/context.xml roles/gitblit/vars roles/gitblit/vars/main.yml
Praktische Beispiele
Ansible-Begriffe: OrchestrierungDelegation ! 1 - name: Configure proxy server for service 2 delegate_to: "{{fe_host_name}}" 3 sudo_user: "{{fe_sudo_user}}" 4 template: > 5 dest=/etc/nginx/local/{{customer}}/{{tenant}}-{{service}}.conf 6 src=nginx-service.conf 7 mode=0644 8 notify: 9 - Apply proxy configuration
Praktische Beispiele
Ansible-Begriffe
Praktische Beispiele
• Playbook - Beschreibung eines Soll-Zustands • Modul - Soll-Zustand für eine einzelnes Objekt • Inventory - Aufzählung der Instrastruktur • Variablen - Parametrisierung von Plays und Templates • Orchestrierung über
• Rollen • Delegation • abhängige Rollen
Lessons learned
• Der Einstieg ist schnell • Module und ein dynamische Repository sind einfach
implementiert
Praktische Beispiele
Lessons learned
• Der Einstieg ist schnell • Module und ein dynamische Repository sind einfach
implementiert • Das Thema Variablen ist unübersichtlich
Praktische Beispiele
Lessons learned
• Der Einstieg ist schnell • Module und ein dynamische Repository sind einfach
implementiert • Das Thema Variablen ist unübersichtlich • Nutze Rollen, abhängige Rollen
Praktische Beispiele
Lessons learned
• Der Einstieg ist schnell • Module und ein dynamische Repository sind einfach
implementiert • Das Thema Variablen ist unübersichtlich • Nutze Rollen, abhängige Rollen • Idempotenz kostet Aufwand
Praktische Beispiele
Lessons learned
• Der Einstieg ist schnell • Module und ein dynamische Repository sind einfach
implementiert • Das Thema Variablen ist unübersichtlich • Nutze Rollen, abhängige Rollen • Idempotenz kostet Aufwand • Playbooks haben deklarative und imperative Aspekte
Praktische Beispiele
Zusammenfassung
Ansible ermöglicht uns die Installation und Konfiguration von Services in eine Managed Server Umgebung.
Es gibt Verbessungspotential.
Ansible 2 bringt einige Verbesserungen: • Verbessertes Handling von Fehlermeldungen • Execution Strategy Plugins • Verbessertes Variablenmanagement
Praktische Beispiele
Vertiefen• Prinzipien hinter dem agilen Manifest
• Offizielle Ansible Website
• Ansible Dokumentation
• cusy Slides bei http://de.slideshare.net/cusyio/devops-ohne-root
!
Weiterführende Literatur
Bildnachweise• Bild: Soccer game at the Azteca Stadium; cc BY-SA 4.0: Jlfdz
• Bild: Peter Hormanns;
• Bild: cusy-Messestand; Veit Schiele
• Michael Gernhardt in space during STS-69 in 1995; PUBLIC DOMAIN: NASA
• Supermassive Black Holes with Relativistic Jets; CC BY 2.0: NASA