15 Jahre Hostsharing / 05.03.2016
page/pages
Hostsharing Play
Anwendungen reproduzierbar in die
Hostsharing Infrastruktur konfigurieren
Peter Hormanns
Informatikbüro Hormanns & Wenz, Krefeld
Hostmaster der Hostsharing eG
Peter Hormanns
Profession
- Java Coder
- DevOps
- Hostsharer
Other
- Gospel
- Free Software
Agenda
- Überblick Ansible
- Einordnung
- Funktionalität
- Begriffe
- Hostsharing Playbooks
- Ansible Module
- Wordpress als Beispiel
- komplexes Setup
Managed Server
als Alternative zur "Cloud" und zum eigenen Server
SaaS | Anwendungen der Genossen |
PaaS | Hostsharing Plattform |
IaaS | Hostsharing-Hardware Sinma Netzwerkanbindung |
Cloud "anderer Leute Computer" |
Unsere Infrastruktur Auftragsdatenverarbeitung |
---|
Ansible Steckbrief
- Automatisierung
- Configuration Management
- Service Orchestration
- Dokumentation
Ansible Alternativen
- CF Engine
- Chef
- Puppet
- SaltStack
- Ansible
Ansible Funktionsweise (1)
Playbook |
Inventory |
Versionierte Dokumente | ||
---|---|---|---|---|
V | V | |||
> > | Ansible Management Node |
< < | Workstation oder Jenkins |
|
V | ||||
Ansible Managed Server |
verwaltete Server oder Dienste |
Ansible Funktionsweise (2)
- Push über ssh (kein Agent)
- YAML Syntax für Playbook
- Jinja Template Engine
- Idempotenz
- Deplarativ
Einfaches Playbook (1)
--- - hosts: wordpress vars: version: 4.0 tasks: - name: extract tarball sudo: yes sudo_user: "{{user}}" unarchive: > copy=no src="/tmp/wordpress.tgz" dest="/home/{{user}}/wordpress ...
Einfaches Playbook (2)
... - name: move to www sudo: yes sudo_user: "{{user}}" command: > rm -rf www && mv wordpress www chdir="/home/{{user}}/wordpress" - name: upload wp-config.php sudo: yes sudo_user: "{{user}}" template: > src="templates/wordpress/wp-config.php" mode=0600 dest="/home/{{user}}/wordpress/www/wp-config.php"
Ansible "Playbook"
Beschreibung eines Soll-Zustands
der Infrastruktur
Ansible "Modul"
Befehle oder besser Zusicherungen
in den Playbooks
- ca. 130 Module im Core
- ca. 270 "Extra"-Module
- eigene Module in jeder Skript-Sprache möglich
- Module für Hostsharing-Infrastruktur
Ansible "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
Ansible "Variablen"
- im Inventory
- in Playbooks
- aus inkludierten Dateien
- von der Kommandozeile
Ansible "Rollen", "Handler"
roles/gitblit/ roles/gitblit/files roles/gitblit/files/logo120x45.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
"Orchestrierung"
- Rollen
- Delegation
- abhängige Rollen
Zusammenfassung
- Modul - Skript zur Zustandsumsetzung für ein Objekt
- Inventory - Aufzählung der Infrastruktur
- Playbook - Beschreibung einer Soll-Zustands
- Template - Vorlage für (Konfigurations-)Datei