Foremanを初めてセットアップしたばかりですが、すべての構成をバージョン管理下に置く方法がわかりません。 Puppetマスターにインストールする各モジュールにGitを使用できることはわかっていますが、モジュールだけでなく、各ホストに関連付けられているクラスやホストに設定されている変数も網羅する、より包括的なソリューションを好みます。関連するワークフローとともに、提案をいただければ幸いです。関連する場合は、GitLabをサイトの中央Gitサーバーとしてセットアップしており、JenkinsなどのCIサーバーをすぐにセットアップする予定です。
Foremanでインフラストラクチャの定義を維持するプラグイン、Gitでデータのシリアル化されたバージョンをほぼ保持し、変更をアップロード(およびインフラストラクチャを変更)します。多分それはあなたに役立つでしょう
あなたが求めているのはとても簡単だと思います。
Puppetの設定は/etc/puppet
にあります。最も単純なオプションは、実行することです
git init /etc/puppet/
次に、Gitlabをリモートとして追加してプッシュできます。
あるいは、私が説明しているようなものを試すこともできます ここ これはフォアマン中心ではありませんが、インスピレーションとして使用できなかった理由はわかりません。
自動的に実行するetckeeperも検討してください。
あなたもラッパーを書くことができます
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
私はしばらくこれで働いています、そしてそれは私の必要性のために大丈夫です。
誰かが後でこれを読んでいる場合に備えて:puppetでは、「version => X.Y.Z」宣言を使用して、インストールするパッケージ/ソフトウェアのバージョンを定義できます。
ジーン、私は最善を尽くしましたが、それでもあなたの質問は得られません。そのために残念 :(
Foremanを使用すると、ホストの詳細で割り当てられた構成変数とともにすべてのクラスを表示できるはずです。参照: http://theforeman.org/manuals/1.4/index.html 。
あなたの質問を理解できるかどうかはわかりませんが、「人形司書」に出くわしましたか https://github.com/rodjek/librarian-puppet ?そこで、使用するpuppetモジュールのバージョン/ sha1を定義できます。
Gitリポジトリの各ブランチがpuppet環境にマップされるリポジトリを設定する必要があると思います。puppetで何かを変更したい場合は、リポジトリのクローンを作成し、変更を加えて、対応するブランチにプッシュするだけです。また、変更をgitリポジトリにプッシュしたときに起動するgitフックを設定して、puppetサーバー上のマップされた環境を更新する必要があります。このすべてを手動で行うことも、このpuppetモジュールを介して行うこともできます。