Upload
cusy-gmbh
View
624
Download
0
Embed Size (px)
Citation preview
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