Как применить конкретную ревизию из Git файла конфигурации и выполнить откат, если не в порядке?

Проблема: я хочу иметь возможность установить RPM с определенной версией файла конфигурации.

Возьмите следующий пример:

Скажем, у меня есть RPM, который я хочу гарантировать, установлен и работает. Здесь нет проблем. Теперь скажите, что я хочу предоставить отдельный файл конфигурации для каждой среды кукол. Также нет проблем здесь.

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

Это вообще возможно с марионеткой? Если да, то какая архитектура будет лучшим подходом для такого сценария?

Любая точка в правильном направлении или помощь в этом вопросе будет очень цениться.

Спасибо,

1 ответ

Решение

Вы можете построить схему следующим образом:

  1. Пусть Puppet развернет учетные данные для вашего центрального репозитория git на каждом агенте
  2. Используйте тип vcsrepo, чтобы Puppet мог поддерживать клон репо на каждом агенте с нужной ревизией.
  3. Пусть ресурсы конфигурационного файла используют локальные источники.

    source => '/path/to/local/git/clone/my_config.ini'
    
  4. Используйте параметр validate_cmd, чтобы Puppet откатился, если что-то не так.

    validate_cmd => 'apache2ctl configtest'
    
  5. Есть файл notify соответствующий сервис или сервис subscribe чтобы Puppet перезагрузил конфигурацию после ее изменения.

Я не понимаю, почему вы продолжаете ссылаться на пакеты RPM - насколько я могу судить, они не имеют отношения к проблеме.

Другие вопросы по тегам