Versionskontrolle Foreman & Puppet

8

Ich habe gerade Foreman zum ersten Mal eingerichtet und bin mir nicht sicher, wie ich alle meine Konfigurationen unter Versionskontrolle stellen soll. Ich weiß, dass ich Git für jedes Modul verwenden kann, das ich auf meinem Puppet-Master installiere, würde aber eine ganzheitlichere Lösung bevorzugen, die nicht nur Module umfasst, sondern auch, welche Klassen jedem Host zugeordnet sind und welche Variablen auf den Hosts festgelegt sind. Anregungen und zugehörige Workflows sind sehr willkommen. Falls es relevant ist, habe ich GitLab als zentralen Git-Server vor Ort eingerichtet und plane, bald einen CI-Server wie Jenkins einzurichten.

GeneBean
quelle
hast du gefunden was du suchst Ich bin immer noch auf der Suche nach einem ganzheitlichen Ansatz für die Verwaltung von Foreman-Vorlagen und -Konf. mgmt. Ich habe festgestellt, dass diese Frage keine akzeptierten Antworten enthält.
Harperville

Antworten:

2

Es gibt ein Plugin, mit dem Sie Ihre Infrastrukturdefinition in Foreman beibehalten können, eine serialisierte Version Ihrer Daten in Git, und Änderungen hochladen (und Ihre Infrastruktur ändern) können. Vielleicht wäre das nützlich für dich

https://github.com/marianitadn/foregit

eLobato
quelle
Auf den ersten Blick mag dies genau das sein, wonach ich gesucht habe! Ich werde es bald überprüfen und als Antwort akzeptieren, wenn es so ist. Vielen Dank!
GeneBean
0

Mit foreman sollten Sie in der Lage sein, alle Klassen zusammen mit allen in den Hostdetails zugewiesenen Konfigurationsvariablen anzuzeigen. Siehe: http://theforeman.org/manuals/1.4/index.html .

ullrich
quelle
Aber wie wende ich die Versionskontrolle auf all diese Informationen an?
GeneBean
0

Ich bin nicht sicher, ob ich Ihre Frage verstehe, aber sind Sie auf "Marionettenbibliothekar" https://github.com/rodjek/librarian-puppet gestoßen ? Dort können Sie definieren, welche Versionen / sha1 von Puppenmodulen Sie verwenden möchten.

ullrich
quelle
Sehr hilfreiche Informationen (und etwas, das ich höchstwahrscheinlich verwenden werde), aber nicht das, wonach ich suche. Ich möchte die Version auf alle Dinge anwenden, die in Foreman und Puppet ausgeführt werden, nicht nur auf die Module. Klärt das auf, was ich versuche zu tun?
GeneBean
0

Nur für den Fall, dass jemand dies später liest: Mit Puppet können Sie mit der Deklaration "version => XYZ" definieren, welche Version des Pakets / der Software Sie installieren möchten.

Gene, ich habe mein Bestes versucht, aber ich verstehe deine Frage immer noch nicht. Das tut mir leid :(

ullrich
quelle
Kein Problem, ich schätze den Versuch sehr.
GeneBean
0

Ich denke, was Sie suchen, ist sehr einfach.

Die Puppet-Konfigurationen sind in /etc/puppet. Die einfachste Option ist nur auszuführen

git init /etc/puppet/

Sie können dann Gitlab als Fernbedienung hinzufügen und darauf pushen.

Alternativ könnten Sie etwas wie das versuchen, was ich hier beschreibe , das nicht Foreman-zentriert ist, aber ich sehe keinen Grund, warum Sie es nicht als Inspiration verwenden könnten.

Chriscowley
quelle
0

Sie könnten auch etckeeper in Betracht ziehen, was dies automatisch tut

Sie könnten sogar einen Wrapper wie schreiben

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

Ich arbeite eine Weile damit und es ist okay für meine Bedürfnisse.

Risiko
quelle
0

Ich denke, Sie müssen nur ein Repository in Git einrichten, in dem jeder Zweig des Git-Repos einer Puppenumgebung zugeordnet wird. Wenn Sie etwas in Puppe ändern möchten, klonen Sie einfach das Repo, nehmen Sie Änderungen vor und verschieben Sie es in den entsprechenden Zweig. Sie müssen auch einen Git-Hook einrichten, der ausgelöst wird, wenn Sie Ihre Änderungen an dem Git-Repo vornehmen, damit die zugeordnete Umgebung auf dem Puppet-Server aktualisiert wird. Sie können dies alles entweder manuell oder einfach über dieses Puppenmodul tun.

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

Ijaz Ahmad Khan
quelle