Präsentation starten
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#
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