Saltstack Thorsten Kramm Berlin Juni 2015



Ähnliche Dokumente
Data Center Automation mit Puppet

Management von grossen IT Umgebungen mit Open Source Tools

KONFIGURATIONSMANAGEMENT MIT PUPPET TIM SCHMELING. 4b:65:72:73:74:69:6e:2c:20:69:63:68:20:6c:69:65:62:65:20:64:69:63:68:21

Benutzerinformation zum IP-Update: Wie aktualisiere ich meine IP-Adresse? Datenstand: / Version 1.0

Zentrales Konfigurationsmanagement mit Puppet

Die Projek*ools. Files, Git, Tickets & Time

Versionskontrollsysteme

Versionsverwaltung für die KU Betriebssysteme. Eine Einführung

Powershell DSC Oliver Ryf

Play with Ansible - Provisioning von Weblogic mit Ansible

Geschrieben von: Stefan Sonntag, den 26. Juni 2011 um 09:45 Uhr - Aktualisiert Sonntag, den 26. Juni 2011 um 10:12 Uhr

Dipl. Inf. Marten Wenzel URZ-S. Tel Remote Installation für LINUX-PCs

The Foreman. Felix Massem und Jan-Frederic Markert

Konfiguration Zentyal 3.3 Inhaltsverzeichnis

Saltstack. Martin Bracher Trivadis AG Bern / Zürich. Schlüsselworte Konfigurationsmanagement, Standardisierung, Remote Execution, Oracle Insallation

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

Softwareinstallation unter Linux

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

Apache Subversion (SVN)

WOZU VERSIONSKONTROLLE?

Continuous Delivery mit Docker

Katello / Pulp / Candlepin

oder von 0 zu IaaS mit Windows Server, Hyper-V, Virtual Machine Manager und Azure Pack

Praktikum Ingenieurinformatik (PI)

Verteilte Versionskontrolle mit GIT Dortmund Ansgar Brauner - GreenPocket GmbH - Köln

Free IPA (Identity Policy - Audit)

Git in großen Projekten

Test mit lokaler XAMPP Oxid Installation

Bootstrapping Ansible. Bengt Giger Informatikdienste ETH Zürich Client Delivery

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE

Quickstart Guide. azeti MAILProtect VAA Die virtuelle Firewall mit Mailschutzfaktor 100!

Betriebswirtschaftliche Standardsoftware - Made for the WEB. ESS Enterprise Solution Server. Installation. Release 6.

Netbeans 6.1 mit SVN Server unter Debian etch mit Windows Clients

MINECRAFT SERVER AUF AZURE

SSH Authentifizierung über Public Key

Wir benötigen: PHP >=5.x mit den Erweiterungen curl, dom, gd, hash, iconv, mycrypt, pcre, pdo, pdo_mysql und simplexml 1/2h Zeit

Konfigurationsmanadment mit Chef und Vagrant. August 2012, Seite: 1/20

[Geben Sie Text ein] ISCSI Targets mit der Software FreeNAS einrichten

1 Zugang zum GIT Repository

Puppet, Salt oder Ansible

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

WRT als Plattform für anderes

mygesuad Download: Wamp/Lamp Systemumgebungen:

PUPPENSPIELE IN DER WOLKE HOW TO BRING A NON-CLOUD APP INTO THE SKY

Linux im Studium. Serbest Hammade / Resh, Christian Sturm. Do, 15. November 2012

Subversion. 17. Oktober Subversion. Norbert Perk. Warum Versionsverwaltung? Wie funktioniert. Was ist Subversion? Subversion- Server.

Rechnernetze Praktikum. Versuch 5: Linux embedded. Ziel

Von SVN zu Git. Daniel Willmann cbna

DynDNS für Strato Domains im Eigenbau

Raspberry PI als AirPrint Server

Linux Cafe Referent: Bernd Strößenreuther

Guide DynDNS und Portforwarding

Automatisierte Serververwaltung mit Hilfe von Puppet

git & git-flow Jens Sandmann Warpzone Münster e.v. Jens Sandmann (WZ) git & git-flow / 31

Anbindung des eibport an das Internet

CentOS 7 Secure And Portable Containers Made Easy Jürgen Brunk Köln,

Perforce Installation mit SSL

Virtuelle Entwicklungsarbeitsplätze und Linux

WordPress lokal mit Xaamp installieren

Software-Engineering Grundlagen des Software-Engineering 7.3 Sourcecode-Verwaltung mit Versionsmanagement-Systemen Einführung in Subversion (SVN)

OpenNebula. public and private cloud management.! Martin Alfke

FS cs108 Programmierpraktikum Subversion. Lukas Beck Cedric Geissmann Alexander Stiemer

Damit die Installation klappt, muss Linux zuvor mit einer Minimalinstallation installiert worden sein!

X2Go in Theorie und Praxis. LIT 2015 Augsburg Richard Albrecht, LUG-Ottobrunn Stefan Baur, Heinz Gräsing, X2Go

docker.io Secure And Portable Containers Made Easy Jürgen Brunk München,

Bachelorvortrag Automatisierte Konfiguration des Build- Servers im Saros-Projekt mit Salt und Git

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

Medieninformatik Praktikum. Jens Rademacher

Einführung in Ansible

Quickstart Guide. azeti SONARPLEX VAA Fehler erkennen, bevor Fehler entstehen

/

Windows 7/8 - Backdoor

Revisionskontrollsystem GIT

SFTP SCP - Synology Wiki

WinCVS Version 1.3. Voraussetzung. Frank Grimm Mario Rasser

Vorlesung Programmieren. Versionskontrollsysteme. Ziele von VCS. Versionskontrolle

Cloud Provisioning mit Juju

mit ssh auf Router connecten

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

Dokumentation owncloud PH Wien

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

[DROPBOX PER USB-STICK NUTZEN]

DK Doku.de. Neu VM. (Specials Documentation von: DK Doku.de, )

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Subversion. Einstieg in die. Versionskontrolle

ftp-stud.hs-esslingen.de

FL1 Hosting FAQ. FL1 Hosting FAQ. V1.0 (ersetzt alle früheren Versionen) Gültig ab: 18. Oktober Telecom Liechtenstein AG

1 Vorraussetzungen. 2 Installiere Eclipse. FS 2015 Herausgabe: Dr. A. L. Schüpbach, D. Sidler, Z. István Departement Informatik, ETH Zurich

Einrichten eines SSH - Server

git Änderungen verwalten mit git

DEPLOYMENTS MIT DOCKER. Created by Wojciech Pietrzak

Software Engineering in der Praxis

Benutzer und Rechte Teil 1

Versionkontrolle mit git

Hybride Cloud-Infrastrukturen Bereitstellung & Verwaltung mit System Center 2012

Praxis Linux-Administration

Transkript:

Saltstack

Kreativität Innovation Trail & Error Prototyping

Präzision Reproduzierbarkeit Geschwindigkeit Automation

Computersysteme Einheit Ordnung Automatisierung

Was macht Saltstack? Einer beherrscht sie alle. root@salt- master:# full- controll

Was macht Saltstack? root@salt- master:# full- controll Einer beherrscht sie alle. Befehle parallel ausführen. Systeme und Software installieren. Systemstatus sicher stellen. Konfigurationen erzeugen und bearbeiten.

Warum Saltstack? es gibt doch schon Puppet cfengine Chef ansible

KISS einfach zu lernen einfach zu installieren einfach zu pflegen

Saltstack ist einfach aber nicht beschränkt!

Salt-Master installieren Hinzufügen des Saltstack Software Repositories # /etc/apt/sources.list.d/saltstack.list deb http://debian.saltstack.com/debian jessie-saltstack main Importieren des Schlüssels wget -q -O- "http://debian.saltstack.com/debian-salt-teamjoehealy.gpg.key" apt-key add - Master installieren apt-get update && apt-get install salt-master

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 Minion installieren apt-get update && apt-get install salt-minion

Master, ich will der folgen

Du gehörst mir!

Seit ihr alle da?

hinter den Kulissen AES Minion 1 Salt-Master TCP 4506 ZeroMQ Messaging AES Minion 2 AES Minion 3 bidirektionale Kommunikation

Befehlen - Salt Module

Ein Befehl - mehrere Sprachen 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

289 Module

Salt Modules Salt-Master Abstraktionsschicht mit einheitlichen Kommandos Arch Linux Debian Fedora RHEL & Clones Solaris Ubuntu Windows OS X FreeBSD Gentoo SUSE

Minions adressieren Grain (Oberflächenbild)

unter der Oberfläche

States definieren # /etc/salt/master

Die Kommandobrücke: top.sls /srv/salt/top.sls

Benutzer verwalten /srv/salt/create_user.sls

Push & Pull Minions holen sich alle States ab: root@minion2:~# salt-call state.highstate Pull Master schickt einen State: Master schickt alle Sates (top.sls): root@master:~# salt minion1.lab4.org state.highstate root@master:~# salt minion1.lab4.org state.sls create_user Push

dynamische Dateien mit Jinja etc-hosts.sls {% 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}}

dynamische Dateien mit Jinja users.sls {% for usr in 'moe','larry','curly' %} {{ usr }}: group: - present user: - present - gid_from_name: True - require: - group: {{ usr }} {% endfor %}

dynamische Dateien mit Jinja apache.sls apache: pkg.installed: {% if grains['os'] == 'RedHat' %} - name: httpd {% elif grains['os'] == 'Ubuntu' %} - name: apache2 {% endif %}

Dateien zentral verwalten burp-backup.sls 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

Dateien kopieren & bearbeiten burp-backup.sls burp: pkg: - installed /etc/burp/cname.conf: file.managed: - source: salt://burp-backup/files/cname.conf - template: jinja - mode: 0600 - user: root - group: root - requiere: burp cname = {{ grains['fqdn'] }}

Pillars: der Datenspeicher Aktivieren Sie Pillars in /etc/salt/master: pillar_roots: base: - /srv/pillar Legen Sie eine top.sls base: '*': - static - packages

Pillars definieren Variablen statisch dynamisch # /srv/pillar/static.sls /srv/pillar/packages.sls company {% if grains['os'] : Meine Firma == 'RedHat' %} smtp_relay: apache: httpd 192.168.4.100 git: git {% elif grains['os'] == 'Debian' %} apache: apache2 git: git-core

Pillars in States verwenden # /srv/sates/linux/apache.sls apache: pkg.installed: - name: {{ pillar['apache'] }} apt-get install apache2 yum install httpd

Virtuelle Maschinen und die Cloud Cloud-Verwaltung installieren apt-get install salt-cloud virtuelle Maschinen erzeugen salt-cloud -p debian@digitalocean vm4711.cloud

voilà!

Hinter den Wolken

Unterstütze Plattformen Public Privat Aliyun Azure DigitalOcean EC2 GoGrid Google Compute HP Cloud Joyent Linode Rackspace SoftLayer Vexxhost Scaleway OpenStack Parallels Proxmox VMWare LXC

Wolken konfigurieren Zugangsdaten zu einem Cloud-Provider eintragen # /etc/salt/cloud.providers.d/digital_ocean.conf digital_ocean_cfg: provider: digital_ocean personal_access_token: XYZ ssh_key_file: /root/.ssh/id_rsa ssh_key_names: my_salt_master,thorsten Kramm location: ams2

Wolken konfigurieren VM-Templates auf Angebote mappen # /etc/salt/cloud.profiles.d/digital_ocean.conf debian@digitalocean: provider: digital_ocean_cfg image: debian-8-x64 size: 512MB location: ams2 private_networking: False

Versionskontrolle mit git Warum man ein VCS nutzen sollte: Änderungen protokollieren Arbeiten im Team ermöglichen Rollouts kontrollieren Qualitätssicherung vorschalten

Arbeiten mit VCS Version 1 commit svn git ups vergessen. Salt-Master /srv/salt/states /srv/salt/pillar ssh + vi deploy

Arbeiten mit VCS Version 2 Salt-Master /srv/salt/states /srv/salt/pillar deploy git push -u origin master

Arbeiten mit VCS Version 3 Salt-Master /srv/salt/states /srv/salt/pillar deploy Fork Merge to Master Pullrequest

Salt-Gitfs

Salt-Sates & Gitfs # /etc/salt/master fileserver_backend: - git gitfs_remotes: - git@bitbucket.org:getsalted/salt-states.git: - user: getsalted - pubkey: /root/.ssh/id_rsa.pub - privkey: /root/.ssh/id_rsa - root: states

Salt-Pillar & Gitfs # /etc/salt/master pillar_roots: base: - /srv/salt/pillar-empty ext_pillar: - git: master https://user:pass@bitbucket.org/getsalted/saltstates.git root=pillar Authentifizierung per SSH-Key leider noch nicht möglich.

dynamische Pillars # /etc/salt/master my_etcd_config: etcd.host: 127.0.0.1 etcd.port: 2379 Update von Konfiguration per Curl curl ext_pillar: http://salt:2379/v2/keys/my_key/\ -XPUT - etcd: -d my_etcd_config value="some data"

Beispiel: Webcluster 1 Loadbalancer 1 Salt-Master N Backends

Last der Backends überwachen salt-master:~# salt '*.backends.local' status.loadavg Schwitz! Die Last ist zu hoch. Neue VM erzeugen salt-master:~# salt-cloud -p lxc-ubuntu 4.backends.local Mache die neue VM zum Backend salt-master:~# salt 4.backends.local state.sls web-backend

Neues Backend klinkt sich in Cluster ein 4.backends:~# curl http://salt:2379/v2/keys/backends/\ $(hostname -f) -XPUT -d value="online" Master aktualisiert die Loadbalancer-Konfiguration salt-master:~# salt loadbalancer.local state.sls nginx loadbalancer.conf http { upstream myapp1 { {% for key, value in pillar['backends'].iteritems() %} server {{key}}; {% end for %} } nginx.sls nginx: service.running: - enable: True - reload: True - watch: - file: loadbalancer.conf

Thorsten Kramm kramm@lin4.de