Кукольный - если состояние в соответствии с текущим состоянием машины - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь написать условие if, чтобы сделать что-то в соответствии с текущим состоянием машины.Я понимаю, что в соответствии с философией puppet каталоги оценивают и загружают машины до того, как они запускаются на машинах.

Для обеспечения согласованности я хотел бы использовать puppet вместо пользовательских сценариев (например, bash).Мне нужно такое поведение в puppet, если это было бы возможно.

Вот пример: агент puppet запускается каждый час на машине:

тянет репо, чтобы увидеть любой новый коммит - поискконкретное слово в репо - если найдено: вызвать некоторые зависимости - если не найдено: вызвать другие зависимости

Моя проблема: «If предложение» уже было оценено на марионеточном сервере, поэтому нет никакого способа создать зависимости вжелаемый заказ в соответствии со статусом машины.

Есть идеи?

1 Ответ

0 голосов
/ 20 февраля 2019

Я пытаюсь написать условие if, чтобы сделать что-то в соответствии с текущим состоянием машины.Я понимаю, что в соответствии с философией Puppet каталоги оценивают и подталкивают машины до того, как они будут работать на машинах.

Это не просто философия Puppet 1006 *, она глубоко укоренилась в реализации Puppet .

Для обеспечения согласованности я хотел бы использовать кукольный вместо использования пользовательских сценариев (например, bash).Мне нужно такое поведение в puppet, если это было бы возможно.

Вот пример: агент puppet запускается каждый час на машине:

тянет репо, чтобы увидеть любой новый коммит - поискконкретное слово в репо - если найдено: вызвать некоторые зависимости - если не найдено: вызвать другие зависимости

В общем случае это просто не произойдет, по крайней мере, без каждого отдельного ресурса ведения журнала выполнениянеудачи.Если ресурс включен в каталог узла, так что он может быть применен вообще, то он будет применяться , если только он не зависит от другого ресурса, который выходит из строя.Можно предположить, что можно построить что-то вокруг Exec ресурсов, настроенных на refreshonly, но тогда вы вернетесь к сценарию.Даже в этом случае для поддержки стиля if / else, в отличие от просто if, вам, безусловно, потребуется реализовать пользовательский тип, чтобы обеспечить выбор того, какой из двух наборов ресурсов следует уведомлять.

Моя проблема: «Если предложение» уже оценивалось на сервере кукол, поэтому нет никакого способа установить зависимости в желаемом порядке в соответствии со статусом машины.

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

Если этого недостаточно, то выполнение всего этого прямо или косвенно с помощью запланированного задания, вероятно, является лучшей альтернативой.

...