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

Как установить некоторые узлы на паузу / удержание / нет?

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

поэтому example1.node.com не будет иметь файла test1 после нескольких запусков марионеточного клиента, но example2.node.com будет иметь файл.

есть такой вариант? существует ли другой подход? (конечно, я могу просто добавить "_" к имени узла, и он перестанет соответствовать. Я ищу официальный способ.

node "example1.node.com"
{
    $noop = true
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

node "example2.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}

Распространенным подходом является использование классификатора внешнего узла для присоединения классов и / или атрибутов к узлам с использованием вашей собственной бизнес-логики. Это задокументировано http://docs.puppetlabs.com/guides/external_nodes.html

Если вы не хотите применять что-либо к вашему файлу, вы можете добавить что-то подобное в site.pp:

if $noop == true {
  fail('noop, I don't do anything!')
}

Немного более продвинутый. Если вы хотите, чтобы марионетка не применяла ваши манифесты, если в системе существует / etc / noop, вы можете создать заказной факт:

Facter.add('noop') { setcode { File.exists? '/etc/noop' } }

затем использовать в site.pp:

if $::noop == true {
  fail('noop, I don't do anything!')

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

Добавление подчеркивания перед именем узла, например _example1.node.com который make предотвратит совпадение узла с fqdn, поэтому конфигурация по умолчанию будет применена, если она существует (см. комментарий @GargantuChet)

node "_example1.node.com"
{
    file 
    {
        "/root/test1":
            content => "test",
            ensure => present,
    }
}