Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen...

29
11.03.2017 Hetzner Online GmbH 1 Herzlich Willkommen Einführung in Ansible Markus Schade

Transcript of Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen...

Page 1: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 1

Herzlich Willkommen

Einführung in Ansible

Markus Schade

Page 2: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH 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

Page 3: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 3

Warum IT Automatisierung?

weniger Wartungsaufwand

Zeit-/Kostenersparnis

Reproduzierbarkeit

Weniger (tipp)fehleranfällig

Page 4: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 4

Automatisierungslösungen

Ansible

Chef

Puppet

Salt

Page 5: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 6: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 6

Installation

$ sudo pip install ansible

Page 7: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 8: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 9: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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“

Page 10: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 10

Ansible Konzepte

Inventory

Playbooks

Rollen

Tasks / Handler / Variablen

Module

Page 11: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 12: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 12

Inventory

# ungruppiertgreen.example.comblue.example.com192.168.100.1

# Gruppe[mailservers]hedwig.example.comerrol.example.com

Page 13: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 14: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 14

Playbooks

Basis

Konfigurationsmanagement

Multi-Host Deployment

bestehen aus Plays

bestehen aus Tasks

Page 15: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 15

Playbooks

---- hosts: webservers tasks: - name: ensure apache is installed apt: name: apache2 state: present

Page 16: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 17: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 17

Includes / Rollen / Module

große Playbooks schnell unübersichtlich

Kapselung der (Teil)aufgaben

Wiederverwendbarkeit

Page 18: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 18

Includes

---- hosts: clt tasks: - include mysql.yml mysql_port=3306 - include apache.yml vars: http_port: 8080

Page 19: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 19

Rollen

---- hosts: webservers roles: - mysql - apache - wordpress

Page 20: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 20

Rollen

automatisierte Includes

erweiterter Suchpfad

roles/<role name>/<x>/main.yml

Page 21: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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)

Page 22: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 23: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 24: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 25: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

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

Page 26: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 26

Demo

Page 27: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 27

Fragen? Fragen!

Page 28: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 28

Wir suchen Mitarbeiter!

Softwareentwicklung/DevOps

Netzwerk- und Linux-Systemadministration

BA oder Duales Studium

Ausbildung zum Fachinformatiker

Page 29: Hetzner Online GmbH - Markus Schade · 1 11.03.2017 Hetzner Online GmbH Herzlich Willkommen Einführung in Ansible Markus Schade

11.03.2017 Hetzner Online GmbH 29

Playbook

https://github.com/asciiprod/clt2017-ansible-demo