Projet

Général

Profil

Saltstack

Personnalisation de recettes

Inclusion

Pour utiliser une recette existante dans une recette:

include:
  - action.recette1
  - action.recette2

Pré-requis

Pour forcer l'exécution d'une recette avant une autre :

include:
  - recette

mkdir:
  file.directory:
    - name: /tmp/stuff/subdir
    - user: eole
    - group: adm
    - file_mode: 744
    - dir_mode: 755
    - require:
      - sls: recette

héritage

recette 'eole' (/srv/salt/eole.sls) :

eole:
  file.directory:
    - name: /tmp/stuff/substuf
    - user: eole
    - group: adm
    - file_mode: 744
    - dir_mode: 755

extension (/srv/salt/local.sls) :

include:
  - eole

extend:
  eole:
    file.directory:
      - makedirs: True

L'appel à la première recette échoue si le répertoire /tmp/stuff n'existe pas :

salt 'local' state.sls eole

La recette étendue le crée automatiquement

Solutions possibles

gestion par eole

Les recettes EOLE seront dans le répertoire :

/usr/share/eole/sls/eole/

Les utilisateurs auront la possibilité de redéfinir une recette en créant un fichier dans :

/usr/share/eole/sls/

La recette devra avoir le même nom que la recette "EOLE".

Dans cette recette, les utilisateurs pourront redéfinir la recette d'origine de la manière suivante :

dans /usr/share/eole/sls/mkdir.sls

include:
    - eole/mkdir

extend:
  mkdir:
    file.directory:
      - user: eole

Les recettes seront copiés au reconfigure dans le répertoire /srv/salt.

S'il y a des recettes personnalisés, la recette EOLE est copiée dans /srv/salt/eole.

application de plusieurs fichiers state avec state.apply

fichier mkdir_eole.sls

mkdir:
  file.directory:
    - name: /tmp/stuff/subdir
    - user: eole
    - group: adm
    - file_mode: 744
    - dir_mode: 755

titi:
  file.directory:
    - name: /tmp/titi
    - user: eole
    - group: root
    - file_mode: 744
    - dir_mode: 755

fichier mkdir_local.sls

include:
    - mkdir_eole

extend:
  mkdir:
    file.directory:
      - name: /tmp/pouet2

exécution

oot@eolebase:/srv/salt# salt '*' state.apply "mkdir_*" 
local:
----------
          ID: mkdir
    Function: file.directory
        Name: /tmp/pouet2
      Result: True
     Comment: Directory /tmp/pouet2 updated
     Started: 17:51:19.335846
    Duration: 9.165 ms
     Changes:   
              ----------
              /tmp/pouet2:
                  New Dir
----------
          ID: titi
    Function: file.directory
        Name: /tmp/titi
      Result: True
     Comment: Directory /tmp/titi updated
     Started: 17:51:19.345197
    Duration: 1.412 ms
     Changes:   
              ----------
              /tmp/titi:
                  New Dir

Summary for local
------------
Succeeded: 2 (changed=2)