Назад | Перейти на главную страницу

Управление версиями Foreman & Puppet

Я только что установил Foreman в первый раз и не знаю, как поставить все мои конфигурации под контроль версий. Я знаю, что могу использовать Git для каждого модуля, который я устанавливаю на своем мастере Puppet, но предпочел бы более целостное решение, охватывающее не только модули, но и то, какие классы связаны с каждым хостом и любыми переменными, установленными на хостах. Мы будем очень благодарны за любые предложения вместе с соответствующими рабочими процессами. Если это актуально, у меня есть настройка GitLab в качестве центрального сервера Git на сайте, и я планирую в ближайшее время настроить сервер CI, такой как Jenkins.

Существует плагин для сохранения определения вашей инфраструктуры в Foreman, в значительной степени сериализованной версии ваших данных в Git, а также для загрузки (и изменения вашей инфраструктуры) изменений. Может быть, это будет полезно для вас

https://github.com/marianitadn/foregit

Я думаю, что то, что вам нужно, очень просто.

Конфиги 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, чтобы обновлять сопоставленную среду на марионеточном сервере. Вы можете сделать все это вручную или просто через этот марионеточный модуль.

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