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

Контроль версий узлов и ролей шеф-повара

Является ли хорошей практикой контроль версий узлов и ролей при использовании chef? Если да, то как это лучше сделать?

Похоже, что нужно иметь возможность взять дерево файлов JSON, созданное с помощью chef_server_backup.rb и просто зарегистрируйте это в ВК. Есть ли лучшие альтернативы?

Обновить

Оказывается, проверка JSON, созданного chef_server_backup.rb является не хорошее решение. Проблема в том, что JSON, созданный скриптом, нестабилен. Каждый раз хеши выходят в другом порядке, и результирующие файлы полностью отличаются от предыдущих версий ... даже если они означают то же самое при анализе как JSON. Я бы лучше просто сохранил сжатые архивы.

(Но если бы я мог канонизировать файлы JSON, упорядочив атрибуты ...)

Я стараюсь сохранить как можно большую часть своей конфигурации в виде файлов JSON и обновляю chef-server с помощью knife [noun] from file name.json. Я начал с репозитория по адресу https://github.com/opscode/chef-repo и я храню все файлы JSON в соответствующих каталогах. То же самое можно сделать и с файлами YAML или Ruby. Использовать show команда, как knife role show apache2 -Fj > roles/apache2.json создавать файлы из существующих данных уже на chef-сервере.

Некоторые из преимуществ подхода "из файла":

  • Относительно легко переключаться между Hosted Chef и Private Chef
  • Вы можете протестировать с помощью chef-solo, используя существующие файлы ролей, элементы data_bag и т. Д.
  • Отслеживайте разницу между изменениями через git diffи просматривать историю не только версий поваренной книги
  • Избыточность данных: если ваш сервер Private Chef или Hosted Chef недоступен, у вас все еще есть вся конфигурация вашей инфраструктуры

Единственное, чего нет в opscode / chef-repo являются файлами узлов. Вы также можете экспортировать / импортировать узлы из файлов, но обычно это не рекомендуется, потому что узлы должны быть одноразовыми. Мне нравится как Натен Харви однажды сказал: «Думайте об узлах как о крупном рогатом скоте, а не о домашних животных».