Introduction à Salt

title logo

Denis Laxalde

3 novembre 2014, la Cantine Toulouse

Logilab, en bref

Logilab : choix technologiques et activités

Python, Debian, Mercurial, Salt, ...

  1. Informatique scientifique : développement de codes de calcul, mise en données, pilotage de simulation, interfaces, optimisation, PLM, simulation numérique dans les nuages

  2. Outils et systèmes : audit de code (Pylint), infrastructure de développement (forge, SCM, packaging), gestion de ressources (grappes de calcul), cloud OpenStack, administration et surveillance de machines via Salt notamment

  3. Gestion de connaissance : développement d'applications métier de gestion de l'information, fusion et alignement de données, visualisation de gros volumes de données hétérogènes, export de données vers des consommateurs externes, web sémantique

SaltStack, c'est quoi ?

Salt en bref

Qui utilise Salt ?

Terminologie Salt

Installer Salt

Master & minions

Mode d'utilisation

Salt : exécution de commandes

Configuration et premières commandes

States et top file

Premiers states et top file

/srv/salt/mystates.sls:

mypkgs:
  pkg.installed:
    - pkgs:
      - vim
      - mercurial

dlaxalde:
  user.present:
    - fullname: Denis Laxalde
    - groups:
      - sudo

/srv/salt/top.sls:

base:
  '*'
    - mystates

State

Une déclaration décrivant un état du système

Exemples: tel paquet est installé, tel service est lancé, tel fichier est présent...

Highstate : ensemble des états pour un minion

salt '*' state.highstate

Outils pour la déclaration de states

Modules SLS (SaLt State)

Un ensemble de déclarations de states dans un fichier .sls

Suit la logique des modules et packages Python :

/srv/salt:

users.sls
web
├── init.sls
├── postgres.sls
└── apache.sls

Dans un fichier top.sls:

base:
  '*':
    - users         # users.sls
    - web           # web/init.sls
  'role:db':
    - match: grain
    - web.posgres   # web/postgres.sls

Top files

Couplage entre :

/srv/salt/top.sls

base:                       # environnement
  '*':
    - python-dev            # SLS (states)
    - vcs-tools
  'role:ci':                # cible
    - jenkins

Grains

grains : information statique, à propos d'un minion

Ciblage de minions à l'aide de grains

/srv/salt/mystates.sls:

mypkgs:
  pkg.installed:
    - pkgs:
      - vim
      {% if grains['os_family'] == 'Debian' %}
      - vim-scripts
      {% endif %}
      - mercurial

/srv/salt/top.sls:

base:
  '*'
    - mystates
  'role:desktop':
    - match: grain
    - desktop

Pillars

pillar : variable pour un ou plusieurs minions sur le master

Ajout de pillars

/srv/pillar/packages.sls:

apache:
{% if grains['os'] == 'Debian' %}
  pkgname: apache2
{% elif grains['os'] == 'RedHat' %}
  pkgname: httpd
{% endif %}

/srv/pillar/top.sls:

base:
  '*'
    - packages

/srv/salt/webserver.sls:

apache:
  pkg.installed:
    - name: {{ pillar['apache:pkgname'] }}

Quelques modules Salt

Aller plus loin

Questions

logo