Contremaître de version et marionnette

8

Je viens de configurer Foreman pour la première fois et je ne sais pas comment procéder pour mettre toutes mes configurations sous contrôle de version. Je sais que je peux utiliser Git pour chaque module que j'installe sur mon maître de marionnettes, mais je préférerais une solution plus holistique qui englobe non seulement les modules mais également les classes associées à chaque hôte et toutes les variables définies sur les hôtes. Toutes les suggestions seraient grandement appréciées ainsi que les workflows associés. Dans le cas où cela est pertinent, j'ai la configuration de GitLab en tant que serveur Git central sur site et je prévois de configurer un serveur CI tel que Jenkins bientôt.

GeneBean
la source
avez-vous trouvé ce que vous cherchiez? Je suis toujours à la recherche d'une approche holistique de la gestion des modèles Foreman et conf. mgmt. J'ai remarqué que cette question n'avait aucune réponse acceptée.
harperville

Réponses:

2

Il existe un plugin pour conserver la définition de votre infrastructure dans Foreman, à peu près une version sérialisée de vos données dans Git, et télécharger (et modifier votre infrastructure) les modifications. Ce serait peut-être utile pour vous

https://github.com/marianitadn/foregit

eLobato
la source
À première vue, c'est peut-être exactement ce que je cherchais! Je vais le vérifier plus bientôt et accepter comme réponse si c'est le cas. Merci!
GeneBean
0

Avec contremaître, vous devriez être en mesure d'afficher toutes les classes ainsi que toute variable de configuration affectée dans les détails de l'hôte. Voir: http://theforeman.org/manuals/1.4/index.html .

ullrich
la source
Mais comment appliquer le contrôle de version à toutes ces informations?
GeneBean
0

Je ne sais pas si je comprends votre question, mais avez-vous rencontré "bibliothécaire de marionnettes" https://github.com/rodjek/librarian-puppet ? Là, vous pouvez définir les versions / sha1 des modules de marionnettes que vous souhaitez utiliser.

ullrich
la source
Des informations très utiles (et quelque chose que je vais probablement utiliser) mais pas ce que je recherche. Je cherche à appliquer la version à tout ce qui se fait dans Foreman et Puppet, pas seulement aux modules. Est-ce que cela clarifie ce que j'essaie de faire?
GeneBean
0

Juste au cas où quelqu'un lirait ceci plus tard: Avec marionnette, vous pouvez définir la version du package / logiciel que vous souhaitez installer avec la déclaration "version => XYZ".

Gene, j'ai fait de mon mieux mais je ne comprends toujours pas votre question. Désolé :(

ullrich
la source
Pas de problème, j'apprécie vraiment la tentative.
GeneBean
0

Je pense que ce que vous recherchez est très simple.

Les configurations Puppet sont disponibles /etc/puppet. L'option la plus simple consiste simplement à exécuter

git init /etc/puppet/

vous pouvez ensuite ajouter Gitlab en tant que télécommande et y pousser.

Alternativement, vous pouvez essayer quelque chose comme ce que je décris ici qui n'est pas centré sur le contremaître, mais je ne vois aucune raison pour laquelle vous ne pourriez pas l'utiliser comme source d'inspiration.

chriscowley
la source
0

Vous pourriez également envisager etckeeper, qui le fait automatiquement

Vous pourriez même écrire un wrapper comme

vi puppet_wrapper.sh

#!/bin/bash
# variables
ETCKEEPER=`which etckeeper`
ETCKEEPER_MSG=$1
PUPPET=`which puppet`
PUPPET_CMD=$2

# Msg would be your commit msg
etckeeper commit $ETCKEEPER_MSG

# PUPPET_CMD e.g. apply
puppet $PUPPET_CMD

je travaille avec cela depuis un certain temps et ça va pour mes besoins.

risqué
la source
0

Je pense que vous avez juste besoin de configurer un référentiel dans git où chaque branche du référentiel git sera mappé à un environnement de marionnettes et quand vous voulez changer quelque chose dans la marionnette, clonez simplement le référentiel, apportez des modifications et poussez-le dans la branche correspondante. Vous devez également configurer un hook git qui se déclenche lorsque vous transmettez vos modifications au référentiel git afin qu'il mette à jour l'environnement mappé sur le serveur de marionnettes. Vous pouvez faire tout cela manuellement ou simplement via ce module de marionnettes.

https://github.com/theforeman/puppet-puppet

Ijaz Ahmad Khan
la source