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é :