hetzner online gmbh - markus schade · 1 11.03.2017 hetzner online gmbh herzlich willkommen...
TRANSCRIPT
11.03.2017 Hetzner Online GmbH 1
Herzlich Willkommen
Einführung in Ansible
Markus Schade
11.03.2017 Hetzner Online GmbH 2
Das Unternehmen
Hetzner Online ist ein professioneller Webhosting-Dienstleister und erfahrener Rechenzentrenbetreiber. Wir bieten Lösungen an, die durch Qualität, Stand der Technik und Sicherheit überzeugen. Dabei reicht das Angebot für Homepage-Einsteiger bis zum professionellem Webentwickler:
Root, Managed und vServer
Colocation
Shared Hosting
Domains & SSL-Zertifikate
11.03.2017 Hetzner Online GmbH 3
Warum IT Automatisierung?
weniger Wartungsaufwand
Zeit-/Kostenersparnis
Reproduzierbarkeit
Weniger (tipp)fehleranfällig
11.03.2017 Hetzner Online GmbH 4
Automatisierungslösungen
Ansible
Chef
Puppet
Salt
11.03.2017 Hetzner Online GmbH 5
Warum Ansible
Kein Master-Server
Keine Agenten-Software
benötigt „nur“ Python und SSH
Konfiguration in YAML
Sehr leicht zu lernen
11.03.2017 Hetzner Online GmbH 6
Installation
$ sudo pip install ansible
11.03.2017 Hetzner Online GmbH 7
Installation
http://docs.ansible.com/ansible/intro_installation.html
$ sudo apt-get install ansibleoder$ sudo apt-get install software-properties-common$ sudo apt-add-repository ppa:ansible/ansible$ sudo apt-get update$ sudo apt-get install ansible
11.03.2017 Hetzner Online GmbH 8
Ansible Module
Python-Skripte
erledigen eigentliche Arbeit
aktuell 500+ Module (Core: 50+)
z.B. ping, command, apt, file, copy, get_url
11.03.2017 Hetzner Online GmbH 9
Ad-Hoc Befehle
Aufruf von Befehlen/Modulen ohne Playbook
ansible <hosts> -m <modul> -a <args>
ansible webservers -a “reboot“
default -m command
ansible mailservers -m service \ -a “name=dovecot state=restarted“
11.03.2017 Hetzner Online GmbH 10
Ansible Konzepte
Inventory
Playbooks
Rollen
Tasks / Handler / Variablen
Module
11.03.2017 Hetzner Online GmbH 11
Inventory
Liste der Server
IP-Adressen
DNS-Namen
Textdatei im INI-Format
default /etc/ansible/hosts
dynamisches Inventory möglich
11.03.2017 Hetzner Online GmbH 12
Inventory
# ungruppiertgreen.example.comblue.example.com192.168.100.1
# Gruppe[mailservers]hedwig.example.comerrol.example.com
11.03.2017 Hetzner Online GmbH 13
Inventory
# mit Mustern[webservers]www[001:020].example.comwww-[a:f].test.example.com
#Gruppen von Gruppen[company:children]mailserverswebservers
11.03.2017 Hetzner Online GmbH 14
Playbooks
Basis
Konfigurationsmanagement
Multi-Host Deployment
bestehen aus Plays
bestehen aus Tasks
11.03.2017 Hetzner Online GmbH 15
Playbooks
---- hosts: webservers tasks: - name: ensure apache is installed apt: name: apache2 state: present
11.03.2017 Hetzner Online GmbH 16
Playbooks
---- hosts: webservers tasks: - name: ensure apache is installed apt: name: apache2 state: present
- hosts: mailservers tasks: - name: copy dovecot configuration template: src: local.j2 dest: /etc/dovecot/local.conf notify: - Reload dovecot
11.03.2017 Hetzner Online GmbH 17
Includes / Rollen / Module
große Playbooks schnell unübersichtlich
Kapselung der (Teil)aufgaben
Wiederverwendbarkeit
11.03.2017 Hetzner Online GmbH 18
Includes
---- hosts: clt tasks: - include mysql.yml mysql_port=3306 - include apache.yml vars: http_port: 8080
11.03.2017 Hetzner Online GmbH 19
Rollen
---- hosts: webservers roles: - mysql - apache - wordpress
11.03.2017 Hetzner Online GmbH 20
Rollen
automatisierte Includes
erweiterter Suchpfad
roles/<role name>/<x>/main.yml
11.03.2017 Hetzner Online GmbH 21
Rollen - Struktur
defaults/ - Variablen (niedrige Prio)
files/ - Dateien ;-)
handlers/ - Tasks via notify
meta/ - Abhängigkeiten
templates/ - Vorlagen
tasks/ - Plays
vars/ - Variable (höhere Prio)
11.03.2017 Hetzner Online GmbH 22
Variablen
apache/defaults/main.yml - app_dir: /srv/wordpress
apache/tasks/main.yml - name: create app directory file: path: {{ app_dir }} state: directory mode: 0755
11.03.2017 Hetzner Online GmbH 23
Facts - Variablen
systemspezifische Variablen ansible hostname -m setup
common/tasks/main.yml - name: add local apt repo apt_repository: repo: ‘deb https://{{mymirror}}/ {{ ansible_distribution|lower }} {{ ansible_lsb.codename }} main‘ state: present filename: local-mirror
11.03.2017 Hetzner Online GmbH 24
Handler
apache/handlers/main.yml - name restart apache2 service: name=apache2 state=restarted
apache/tasks/main.yml - name: copy apache config template: src: default.conf dest: /etc/apache2/apache2.conf notify: restart apache2
11.03.2017 Hetzner Online GmbH 25
Abhängigkeiten
Liste an Rollen
werden vor aktueller Rolle eingefügt
z.B. wordpress/meta/main.yml dependencies: - role: apache2 - role: mysql
11.03.2017 Hetzner Online GmbH 26
Demo
11.03.2017 Hetzner Online GmbH 27
Fragen? Fragen!
11.03.2017 Hetzner Online GmbH 28
Wir suchen Mitarbeiter!
Softwareentwicklung/DevOps
Netzwerk- und Linux-Systemadministration
BA oder Duales Studium
Ausbildung zum Fachinformatiker
11.03.2017 Hetzner Online GmbH 29
Playbook
https://github.com/asciiprod/clt2017-ansible-demo