Является ли хорошей практикой контроль версий узлов и ролей при использовании 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-сервере.
Некоторые из преимуществ подхода "из файла":
git diff
и просматривать историю не только версий поваренной книгиЕдинственное, чего нет в opscode / chef-repo являются файлами узлов. Вы также можете экспортировать / импортировать узлы из файлов, но обычно это не рекомендуется, потому что узлы должны быть одноразовыми. Мне нравится как Натен Харви однажды сказал: «Думайте об узлах как о крупном рогатом скоте, а не о домашних животных».