Я только что установил Foreman в первый раз и не знаю, как поставить все мои конфигурации под контроль версий. Я знаю, что могу использовать Git для каждого модуля, который я устанавливаю на своем мастере Puppet, но предпочел бы более целостное решение, охватывающее не только модули, но и то, какие классы связаны с каждым хостом и любыми переменными, установленными на хостах. Мы будем очень благодарны за любые предложения вместе с соответствующими рабочими процессами. Если это актуально, у меня есть настройка GitLab в качестве центрального сервера Git на сайте, и я планирую в ближайшее время настроить сервер CI, такой как Jenkins.
Существует плагин для сохранения определения вашей инфраструктуры в Foreman, в значительной степени сериализованной версии ваших данных в Git, а также для загрузки (и изменения вашей инфраструктуры) изменений. Может быть, это будет полезно для вас
Я думаю, что то, что вам нужно, очень просто.
Конфиги Puppet находятся в /etc/puppet
. Самый простой вариант - просто запустить
git init /etc/puppet/
затем вы можете добавить Gitlab в качестве пульта дистанционного управления и нажать на него.
В качестве альтернативы вы можете попробовать что-то вроде того, что я описываю Вот который не ориентирован на Формана, но я не вижу причин, по которым вы не могли бы использовать его в качестве источника вдохновения.
На всякий случай, если кто-то прочитает это позже: с помощью puppet вы можете определить, какую версию пакета / программного обеспечения вы хотите установить, с помощью объявления «version => X.Y.Z».
Джин, я старался изо всех сил, но до сих пор не понимаю твой вопрос. Простите за это :(
Я не уверен, понял ли я ваш вопрос, но сталкивались ли вы с "кукольным библиотекарем" https://github.com/rodjek/librarian-puppet? Здесь вы можете определить, какие версии / sha1 марионеточных модулей вы хотите использовать.
С помощью мастера вы должны иметь возможность просматривать все классы вместе с любой переменной конфигурации, назначенной в деталях хоста. Видеть: http://theforeman.org/manuals/1.4/index.html.
Вы также можете рассмотреть 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
Я работаю с этим некоторое время, и это подходит для моих нужд.
Я думаю, вам просто нужно настроить репозиторий в git, где каждая ветвь репозитория git будет сопоставляться с марионеточной средой, и если вы хотите что-то изменить в марионетке, просто клонируйте репо, внесите изменения и отправьте его в соответствующую ветку. Вам также необходимо настроить ловушку git, которая срабатывает при отправке изменений в репозиторий git, чтобы обновлять сопоставленную среду на марионеточном сервере. Вы можете сделать все это вручную или просто через этот марионеточный модуль.