Saltstack 
Saltstack | Thorsten Kramm | August 2014
Saltstack | Thorsten Kramm | August 2014
Computersysteme 
einheitlich 
geordnet 
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 | Thorsten Kramm | August 2014
Saltstack 
ist 
einfach
Saltstack | Thorsten Kramm | August 2014 
KISS 
einfach zu lernen 
einfach zu installieren 
einfach zu pflegen
Saltstack 
skaliert
Salt-Master installieren 
Hinzufügen des Saltstack Software Repositories 
/etc/apt/sources.list.d/saltstack.list 
deb 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.org salt 
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 
Minion 1 
bidirektionale Kommunikation 
Master Minion 2 
Saltstack | Thorsten Kramm | August 2014 
Minion 3 
Zero MQ, AES
Befehlen - Salt Module 
Saltstack | Thorsten Kramm | August 2014
Ein Befehl - mehrere „Sprachen“ 
Saltstack | Thorsten Kramm | August 2014 
Debian/ Ubuntu: 
apt-get update && apt-get -y upgrade 
CentOS/ RedHat: 
yum update
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='kramm@lin4.de‘ 
Standard-Shell ändern 
salt '*' user.chshell thorsten /bin/bash 
Saltstack | Thorsten Kramm | August 2014
246 Module
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 
- 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 & bearbeiten 
burp: 
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'] }} 
Saltstack | Thorsten Kramm | August 2014
Thorsten Kramm 
kramm@lin4.de

IT Automatisierung mit Salt Stack | Thorsten Kramm @ FrosCon 2014

  • 1.
    Saltstack Saltstack |Thorsten Kramm | August 2014
  • 4.
    Saltstack | ThorstenKramm | August 2014
  • 7.
    Computersysteme einheitlich geordnet automatisiert Saltstack | Thorsten Kramm | August 2014
  • 8.
    Was macht Saltstack? Einer beherrscht sie alle. Befehle parallel ausführen. Systeme und Software installieren. Systemstatus sicher stellen. Konfigurationen erzeugen und bearbeiten. Saltstack | Thorsten Kramm | August 2014
  • 10.
  • 11.
    Saltstack | ThorstenKramm | August 2014 KISS einfach zu lernen einfach zu installieren einfach zu pflegen
  • 13.
  • 14.
    Salt-Master installieren Hinzufügendes Saltstack Software Repositories /etc/apt/sources.list.d/saltstack.list deb 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
  • 16.
    Minions installieren FügeDNS- 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.org salt 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
  • 18.
    „Master, ich willder folgen“ Saltstack | Thorsten Kramm | August 2014
  • 19.
    „Du gehörst mir!“ Saltstack | Thorsten Kramm | August 2014
  • 20.
    „Seit ihr alleda?“ Saltstack | Thorsten Kramm | August 2014
  • 21.
    hinter den Kulissen Minion 1 bidirektionale Kommunikation Master Minion 2 Saltstack | Thorsten Kramm | August 2014 Minion 3 Zero MQ, AES
  • 22.
    Befehlen - SaltModule Saltstack | Thorsten Kramm | August 2014
  • 23.
    Ein Befehl -mehrere „Sprachen“ Saltstack | Thorsten Kramm | August 2014 Debian/ Ubuntu: apt-get update && apt-get -y upgrade CentOS/ RedHat: yum update
  • 24.
    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='kramm@lin4.de‘ Standard-Shell ändern salt '*' user.chshell thorsten /bin/bash Saltstack | Thorsten Kramm | August 2014
  • 26.
  • 27.
    Minions adressieren Grain(Oberflächenbild) Saltstack | Thorsten Kramm | August 2014
  • 28.
    unter der Oberfläche Saltstack | Thorsten Kramm | August 2014
  • 29.
    States definieren /etc/salt/master Saltstack | Thorsten Kramm | August 2014
  • 30.
    Die Kommandobrücke: top.sls /srv/salt/top.sls Saltstack | Thorsten Kramm | August 2014
  • 31.
    Benutzer verwalten /srv/salt/create_user.sls Saltstack | Thorsten Kramm | August 2014
  • 32.
    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
  • 34.
    dynamische Dateien mitJinja {% 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 - mail.{{domain}} Saltstack | Thorsten Kramm | August 2014
  • 35.
    dynamische Dateien mitJinja {% for usr in 'moe','larry','curly' %} {{ usr }}: group: - present user: - present - gid_from_name: True - require: - group: {{ usr }} {% endfor %} Saltstack | Thorsten Kramm | August 2014
  • 36.
    dynamische Dateien mitJinja apache: pkg.installed: {% if grains['os'] == 'RedHat' %} - name: httpd {% elif grains['os'] == 'Ubuntu' %} - name: apache2 {% endif %} Saltstack | Thorsten Kramm | August 2014
  • 37.
    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
  • 38.
    Dateien kopieren &bearbeiten burp: 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'] }} Saltstack | Thorsten Kramm | August 2014
  • 39.