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

Devops ohne root

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

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