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

Лучший способ исключить узел из манифеста марионетки

Я хочу исключить несколько узлов из манифеста.

Я прочел "Как исключить модули Puppet для нескольких узлов?", но я хотел бы добиться чего-то похожего на https://groups.google.com/forum/#!topic/puppet-users/CdeIUbMwAM4:

case $hostname {
        yourspecialhost: { $doit = false }
        default: { $doit = true }
}

if $doit {
        dowhatshouldbedoneinhere
}

Поскольку этот пост немного устарел (2008 г.), мне было интересно, есть ли в настоящее время более короткий или более чистый способ достижения той же цели?

редактировать : Мы уже пытаемся быть детализированными, поскольку у нас есть определенные модули для веб-сервера или базы данных. В нашем конкретном случае мы создали модуль много лет назад о sshd.

Сегодня мне нужно создать сервер с очень необычной функцией sshd (и другим двоичным кодом). Поэтому я бы хотел исключить этот сервер (и только этот) из модуля sshd.

Можно ли без Хиеры? Есть ли более чистый синтаксис, чем цитируемый?

Вероятно, вы захотите получить более детальную классификацию. Например, ваши модули «поймать все» включаются в узел по умолчанию, определенный в sites.pp, модули, которые соответствуют определенным ролям, таким как веб-сервер или база данных, могут быть включены с оператором case и внешними классификаторами, а модули, специфичные для одного сервера, могут быть сделано с помощью hiera или даже сопоставления имени хоста.

http://nuknad.com/2011/02/11/self-classifying-puppet-nodes/ .

Я не нашел более чистого синтаксиса, чем цитируемый (по крайней мере, без использования Hiera).

Поэтому я решил сделать то, что указано в вопросе.

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

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

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