devops ohne root

41
DevOps ohne root Anwendungen reproduzierbar für Managed Server konfigurieren Peter Hormanns cusy GmbH Vortrag auf dem Linuxday Dornbirn am 21. Nov. 2015

Upload: cusy-gmbh

Post on 27-Jan-2017

622 views

Category:

Internet


0 download

TRANSCRIPT

DevOps ohne rootAnwendungen reproduzierbar für Managed Server konfigurieren

Peter Hormanns cusy GmbH Vortrag auf dem Linuxday Dornbirn am 21. Nov. 2015

Kapitel

Thanks for coming

you + me + cusy

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 !

!

TextTextText

Referenzkunde

Kapitelyou + me + cusy

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

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

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: OrchestrierungAbhängige Rollen !

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

Praktische Beispiele

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

Fragen?Diskussion.

Kontakt

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