Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Salt stack

452 views

Published on

Introduction to SaltStack

Published in: Technology
  • Be the first to comment

Salt stack

  1. 1. SaltStack
  2. 2. Quoi qu’est ce ?
  3. 3. Exécution a distance
  4. 4. Gestion d’état du système
  5. 5. Gestion de configuration
  6. 6. Philosophie ?
  7. 7. Simple
  8. 8. Flow
  9. 9. Solid State
  10. 10. Architecture
  11. 11. Master & Minions
  12. 12. Master 0MQ - PubKey Auth - Pub/Sub - Push
  13. 13. Minion Master less - Does everything - Controlled Machine
  14. 14. MinionSyndic Master
  15. 15. salt '*' grains.items cibles commandesalt master En ligne de commande salt '*' cmd.run 'ls -aulh /'
  16. 16. Grains données récentes collectées sur les minions
  17. 17. Grains salt -G 'os:Ubuntu' test.ping salt -C 'S@10.0.0.0/24 and G@os:Ubuntu' test.ping …
  18. 18. Modules Fournissent les fonctionnalités
  19. 19. ssh iptables files package service systemd S3 mongo apache redis ntp aliases mysql mount npm coffee
  20. 20. States Exécution conditionnel décrite en YAML
  21. 21. States Décrire ce qu’il faut gérer ou configurer sur vos machines. Uniquement par des données YAML et des Template
  22. 22. basic state apache: pkg.installed: [] service.running: - require: - pkg: apache apache.sls
  23. 23. 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
  24. 24. Appliquer les State
  25. 25. salt ‘webserver’ state.sls apache salt '*' state.highstate appliquer un state Appliquer tous les states
  26. 26. top.sls base: '*': - redis.server - java8 - tomcat - haproxy
  27. 27. Templating Jinja partout
  28. 28. apache: pkg.installed: {% if grains['os'] == 'RedHat'%} - name: httpd {% endif %} service.running: {% if grains['os'] == 'RedHat'%} - name: httpd {% endif %}
  29. 29. {% 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 %}
  30. 30. /etc/redis/redis.conf: file.managed: - template: jinja - source: salt://redis/files/redis.conf
  31. 31. Pillar
  32. 32. • Des fichiers YAML contenant les paramètres • Un fichier top.sls pour cibler les minions • Peuvent être utilisés dans les states
  33. 33. 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 %}
  34. 34. base: '*': - redis.server - java8 - tomcat - haproxy top.sls
  35. 35. Salt Mine Données récentes
  36. 36. • 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
  37. 37. 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
  38. 38. Returners Persister le résultat des minions
  39. 39. • MongoDB • Redis • SQL • Graphite • Custom Les données peuvent-être utilisées via ext_pillar
  40. 40. Event Reactor Réagir aux évènements
  41. 41. Et plus encore
  42. 42. • Scheduling • Orchestration • Master API • SaltCloud • SaltSsh • SaltVirt • bootstrap
  43. 43. Quelques liens • docs.saltstack.com • https://github.com/saltstack-formulas • http://saltstack.com/saltconf15-video/
  44. 44. Questions ?

×