Florent Peterschmitt

Puppet - Gestion des dépendances entre classes

Problème

Nous souhaitons faire en sorte que l’exécution de classes Puppet se fasse dans un ordre bien choisi et sans avoir à gérer les dépendences à la main de cette façon :

Ressource B require -> Ressource A

En effet, si on doit s’assurer que tous les éléments présents dans une classe s’exécutent avant la ressource (ici une autre classe) A, alors il faudra utiliser le mécanisme de containment.

Ce qui m’a amené à trouver la solution provient du ticket 8040.

Solutions

Il existe une solution moche et une propre, la moche étant un workaround pour les version inférieures à 3.4.0 de Puppet.

Solution Puppet < 3.4.0

class init {
    anchor {'init::begin':} ->
    class {'init::install':} ->
    class {'init::config':} ->
    anchor {'init::end':}
}

Solution Puppet >= 3.4.0

class init {
    contain init::install
    contain init::config

    Class['init::install'] ->
    Class['init::config']
}

Mise en œuvre

Pour ma configuration, voici ce qui a été réalisé :

Comments