Existe-t-il un moyen de forcer la marionnette à faire certaines choses en premier? Par exemple, j'en ai besoin pour installer un RPM sur tous les serveurs pour ajouter un référentiel yum (communauté IUS) avant d'installer l'un des packages.
26
Réponses:
Si vous voulez vous assurer qu'un référentiel est installé sur tout votre serveur, je suggérerais quelque chose comme ça
Ensuite, pour tout nœud qui s'étend,
base
vous pouvez direCela garantira que
bar
ne sera installé que si le référentiel IUS est définila source
Bien que les étapes puissent gérer cela, tout comme les dépendances spécifiques au repo yum, mieux vaut déclarer la relation de manière générique.
Mettez simplement
Yumrepo <| |> -> Package <| provider != 'rpm' |>
votre manifeste de marionnettes.Cela fait en sorte que tous les types yumrepo soient traités avant tous les packages qui n'ont pas «rpm» comme fournisseur. Cette dernière exclusion est pour que je puisse utiliser (par exemple) le package RPM epel-release pour aider à installer le repo yum.
la source
(J'ai trouvé cette question après avoir répondu presque la même chose ... alors j'ai pensé que ma réponse s'applique ici aussi et cela vaut la peine de la répéter (il est plus sûr d'avoir une réponse à deux endroits ..)
D'après ce que je comprends, c'est exactement à cela que servent les étapes - elles vous permettent de grouper et d'ordonner les exécutions de classe. J'utilise des "étapes" pour mettre à jour et configurer APT sur les serveurs Debian, ce qui devrait être très similaire à ce que vous allez faire avec YUM.
Tout d'abord, vous déclarez l'étape "yum" au niveau supérieur (au-dessus des "nœuds"), afin que les classes de l'étape "yum" soient exécutées avant celles "principales":
Ensuite, vous attribuez une étape aux classes. Vous pouvez le faire directement dans votre définition de nœud:
la source
Vous pouvez utiliser des balises . Cela vous permettrait de baliser l'installateur du référentiel avec
firstrun
ou quelque chose,puis exécutez
et il n'exécuterait que les modules / instructions correspondant à la balise.
la source
La clé que vous devez utiliser est le mot clé require - "Evaluer une ou plusieurs classes, en ajoutant la classe requise comme dépendance".
Un exemple d'utilisation d'un référentiel apt pourrait être:
(Adapté de cet exemple de bootstrap de marionnettes ).
Vous pouvez donc voir comment chaque étape nécessite que la précédente soit effectuée en premier. Je vous laisse découvrir comment l'appliquer à yum car je ne sais pas où il stocke ses fichiers.
la source
Puppet lit la configuration de haut en bas, donc si vous incluez une classe avec le repo yum en premier dans cette classe, ce repo sera ajouté avant toute autre chose.
Si vous utilisez les paramètres requis sur un package, vous vous assurerez que le type de ressource requis est présent avant d'ajouter le package, en tant que tel:
Ce code ci-dessus ajoutera le dépôt avant d'ajouter le package.
la source
require
mot - clé, ce que vous avez fait dans la deuxième partie.Quelque chose comme ça a fonctionné pour moi:
J'ai inclus quelque chose comme ça sur mysite.pp. De cette façon, vos modules de marionnettes sont exempts de références aux dépôts yum.
la source