salt stack

44
SaltStack

Upload: seven-le-mesle

Post on 14-Apr-2017

262 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Salt stack

SaltStack

Page 2: Salt stack

Quoi qu’est ce ?

Page 3: Salt stack

Exécution a distance

Page 4: Salt stack

Gestion d’état du système

Page 5: Salt stack

Gestion de configuration

Page 6: Salt stack

Philosophie ?

Page 7: Salt stack

Simple

Page 8: Salt stack

Flow

Page 9: Salt stack

Solid State

Page 10: Salt stack

Architecture

Page 11: Salt stack

Master & Minions

Page 12: Salt stack

Master 0MQ - PubKey Auth - Pub/Sub - Push

Page 13: Salt stack

MinionMaster less - Does everything - Controlled Machine

Page 14: Salt stack

MinionSyndic

Master

Page 15: Salt stack

salt '*' grains.itemscibles

commandesalt master

En ligne de commande

salt '*' cmd.run 'ls -aulh /'

Page 16: Salt stack

Grainsdonnées récentes collectées sur les minions

Page 17: Salt stack

Grains

salt -G 'os:Ubuntu' test.ping

salt -C '[email protected]/24 and G@os:Ubuntu' test.ping

Page 18: Salt stack

ModulesFournissent les fonctionnalités

Page 19: Salt stack

ssh

iptables files

package

servicesystemd

S3

mongo

apache

redis

ntp

aliases

mysql

mount

npm

coffee

Page 20: Salt stack

StatesExécution conditionnel décrite en YAML

Page 21: Salt stack

States

Décrire ce qu’il faut gérer ou configurer sur vos machines.

Uniquement par des données YAML et des Template

Page 22: Salt stack

basic state

apache: pkg.installed: [] service.running: - require: - pkg: apache

apache.sls

Page 23: Salt stack

state & configurationapache: pkg.installed: [] service.running: - watch: - pkg: apache - file: /etc/httpd/conf/httpd.conf - user: apache

/etc/httpd/conf/httpd.conf: file.managed: - source: salt://apache/httpd.conf - user: root - group: root - mode: 644

Page 24: Salt stack

Appliquer les State

Page 25: Salt stack

salt ‘webserver’ state.sls apache

salt '*' state.highstate

appliquer un state

Appliquer tous les states

Page 26: Salt stack

top.sls

base: '*': - redis.server - java8 - tomcat - haproxy

Page 27: Salt stack

TemplatingJinja partout

Page 28: Salt stack

apache: pkg.installed: {% if grains['os'] == 'RedHat'%} - name: httpd {% endif %} service.running: {% if grains['os'] == 'RedHat'%} - name: httpd {% endif %}

Page 29: Salt stack

{% for mnt in salt['cmd.run']('ls /dev/data/moose*').split() %} /mnt/moose{{ mnt[-1] }}: mount.mounted: - device: {{ mnt }} - fstype: xfs - mkmnt: True file.directory: - user: mfs - group: mfs - require: - user: mfs - group: mfs {% endfor %}

Page 30: Salt stack

/etc/redis/redis.conf: file.managed: - template: jinja - source: salt://redis/files/redis.conf

Page 31: Salt stack

Pillar

Page 32: Salt stack

• Des fichiers YAML contenant les paramètres

• Un fichier top.sls pour cibler les minions

• Peuvent être utilisés dans les states

Page 33: Salt stack

tomcat: shutdown_port: 8005 http_port: 8080 http_timeout: 2000 version: '8.0.21'

{% set default_settings = { 'tomcat': { 'shutdown_port': '8005', 'http_port': 8080, 'http_timeout': 2000, 'version': '8.0.21' } }%}

{# Update settings defaults from pillar data #} {% set tomcat_settings = salt['pillar.get']('tomcat', default=default_settings.tomcat) %}

{% from "tomcat/map.jinja" import tomcat_settings with context %}

Page 34: Salt stack

base: '*': - redis.server - java8 - tomcat - haproxy

top.sls

Page 35: Salt stack

Salt MineDonnées récentes

Page 36: Salt stack

• Les minions ajoutent des données à la mine

• Le master les rends disponibles

• Un state peut utiliser les données de la mine pour assurer la configuration

• Attention il ne s’agit pas de données en temps réel

Page 37: Salt stack

mine_functions: network.ip_addrs: cidr: 192.168.0.0/16

Ajoute les ip du minion à la mine

{% for server, addrs in salt['mine.get']('roles:redis-tomcat', 'network.ip_addrs', expr_form='grain').items() %} server {{ server }} {{ addrs[0] }}:{{salt['pillar.get']('tomcat').http_port}} check {% endfor %}

Utilise la mine pour HAProxy

Page 38: Salt stack

ReturnersPersister le résultat des minions

Page 39: Salt stack

• MongoDB

• Redis

• SQL

• Graphite

• Custom

Les données peuvent-être utilisées via ext_pillar

Page 40: Salt stack

Event ReactorRéagir aux évènements

Page 41: Salt stack

Et plus encore

Page 42: Salt stack

• Scheduling

• Orchestration

• Master API

• SaltCloud

• SaltSsh

• SaltVirt

• bootstrap

Page 43: Salt stack

Quelques liens

• docs.saltstack.com

• https://github.com/saltstack-formulas

• http://saltstack.com/saltconf15-video/

Page 44: Salt stack

Questions ?