Upload
thorstenkramm
View
279
Download
0
Embed Size (px)
DESCRIPTION
IT Automatisierung mit Salt Stack | Thorsten Kramm @ FrosCon 2014
Citation preview
Saltstack | Thorsten Kramm | August 2014
Saltstack
Saltstack | Thorsten Kramm | August 2014
Saltstack | Thorsten Kramm | August 2014
Computersysteme
einheitlichgeordnet
automatisiert
Saltstack | Thorsten Kramm | August 2014
Was macht Saltstack?
Einer beherrscht sie alle.
Befehle parallel ausführen.Systeme und Software installieren.
Systemstatus sicher stellen.Konfigurationen erzeugen und bearbeiten.
Saltstack ist
einfach
Saltstack | Thorsten Kramm | August 2014
KISS
einfach zu lerneneinfach zu installieren
einfach zu pflegen
Saltstack
skaliert
Saltstack | Thorsten Kramm | August 2014
Salt-Master installieren
Hinzufügen des Saltstack Software Repositories
/etc/apt/sources.list.d/saltstack.listdeb http://debian.saltstack.com/debian wheezy-saltstack main
Importieren des Schlüssels
wget -q -O- “http://debian…“ | apt-key add -
Master installieren
apt-get update && apt-get install salt-master
Das war’s schon!
Saltstack | Thorsten Kramm | August 2014
Minions installieren
Füge DNS- oder Hosts-Eintrag hinzu
root@minion2:~# cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 minion2.lab4.org minion2
10.129.163.163 salt.lab4.orgsalt
Downloaden und Ausführen des „magischen Installers“
curl -L https://bootstrap.saltstack.com -o install_salt.sh
bash install_salt.sh
Oder
wget -O - https://bootstrap.saltstack.com|bash
Saltstack | Thorsten Kramm | August 2014
„Master, ich will der folgen“
Saltstack | Thorsten Kramm | August 2014
„Du gehörst mir!“
Saltstack | Thorsten Kramm | August 2014
„Seit ihr alle da?“
Saltstack | Thorsten Kramm | August 2014
hinter den Kulissen
Master Minion 2
Minion 3
Minion 1
bidirektionale Kommunikation
Zero MQ, AES
Saltstack | Thorsten Kramm | August 2014
Befehlen - Salt Module
Saltstack | Thorsten Kramm | August 2014
Ein Befehl - mehrere „Sprachen“
Debian/ Ubuntu:
apt-get update && apt-get -y upgrade
CentOS/ RedHat:
yum update
Saltstack | Thorsten Kramm | August 2014
Beispiel: Benutzer anlegen
Benutzer auf allen Systemen anlegen
salt * user.add thorsten
Einen öffentlichen SSH-Schlüssel hinterlegen
salt '*' ssh.set_auth_key thorsten AAAAB3NzaC1y…p8cow== enc='rsa' comment='[email protected]‘
Standard-Shell ändern
salt '*' user.chshell thorsten /bin/bash
246 Module
Saltstack | Thorsten Kramm | August 2014
Minions adressieren
Grain (Oberflächenbild)
Saltstack | Thorsten Kramm | August 2014
unter der Oberfläche
Saltstack | Thorsten Kramm | August 2014
States definieren/etc/salt/master
Saltstack | Thorsten Kramm | August 2014
Die Kommandobrücke: top.sls/srv/salt/top.sls
Saltstack | Thorsten Kramm | August 2014
Benutzer verwalten/srv/salt/create_user.sls
Saltstack | Thorsten Kramm | August 2014
Push & Pull
Minions holen sich alle States ab:root@minion2:~# salt-call state.highstate
Master schickt alle Sates (top.sls):
salt minion1.lab4.org state.highstate
Master schickt einen State:
salt minion1.lab4.org state.sls create_user
Saltstack | Thorsten Kramm | August 2014
dynamische Dateien mit Jinja{% set domain = ‚example.com' %}
gw:
host.present:
- ip: 192.168.152.10
- names:
- gw
- gw.{{domain}}
mail:
host.present:
- ip: 192.168.152.7
- names:
- mail.{{domain}}
Saltstack | Thorsten Kramm | August 2014
dynamische Dateien mit Jinja
{% for usr in 'moe','larry','curly' %}
{{ usr }}:
group:
- present
user:
- present
- gid_from_name: True
- require:
- group: {{ usr }}
{% endfor %}
Saltstack | Thorsten Kramm | August 2014
dynamische Dateien mit Jinja
apache:
pkg.installed:
{% if grains['os'] == 'RedHat' %}
- name: httpd
{% elif grains['os'] == 'Ubuntu' %}
- name: apache2
{% endif %}
Saltstack | Thorsten Kramm | August 2014
Dateien kopieren
burp:
pkg:
- installed
/etc/burp/burp.conf:
file.managed:
- source: salt://files/all/etc/burp/burp.conf
- mode: 0600
- user: root
- group: root
- requiere: burp
Saltstack | Thorsten Kramm | August 2014
Dateien kopieren & bearbeitenburp:
pkg:
- installed
/etc/burp/cname.conf:
file.managed:
- source: salt://files/all/etc/burp/cname.conf
- template: jinja
- mode: 0600
- user: root
- group: root
- requiere: burp
files/all/etc/burp/cname.conf:
cname = {{ grains['fqdn'] }}