Как я могу управлять puppet.conf с Puppet?

11

Я использую Puppet для управления серверами Linux и различными сервисами. Работает хорошо, за исключением самой кукольной службы.

Мой кукольный класс такой:

class puppet {
  file { "/etc/puppet/puppet.conf":
    owner  => 0, group  => 0, mode => 0644,
    content => template("${module_name}/puppet.conf.erb"),
  }

  service { "puppet":
    name       => "puppet",
    ensure     => running,
    enable     => true, hasstatus  => true, hasrestart => true,
    require    => File["/etc/puppet/puppet/conf"]
    subscribe  => File["/etc/puppet/puppet/conf"]
  }
}

}

Когда изменение применяется к /etc/puppet/puppet.conf, марионетка замечает, что ей нужно перезапустить службу марионеток, и поэтому вылетает сам:

Mar 30 17:08:23 XXXX puppet-agent[20172]: (/Stage[main]/Puppet/File[/etc/puppet/puppet.conf]/content) content changed '{md5}eeaf5dfc7d88c8d9c85e6a8cc714d702' to '{md5}ef6ff0e423f4125e24b689980df9f71d'
Mar 30 17:08:23 XXXX puppet-agent[20172]: Caught TERM; calling stop

Знаете ли вы, как я могу корректно обновить puppet.conf с помощью puppet?

Корен
источник

Ответы:

10

Демон puppet автоматически заметит изменения в файле puppet.conf без необходимости перезапуска. Просто удалите subscribe => File["/etc/puppet/puppet.conf"]из service { "puppet" ... }и все будет работать.

Кукольный тоже не может ensure => runningсам по себе. Использование чего-то вроде Mutal Restart с марионеткой гарантирует, что cron работает, и cronjob гарантирует, что марионетка работает, будет работать.

Freiheit
источник
Я проверю, работает ли это в понедельник, но мне это кажется очень хорошим. Спасибо за указатель о взаимном перезапуске.
Корен
1

Одно из решений - не запускать puppet как демон, а вызывать его из cron. Это то, что многие люди предпочитают, потому что для них демон потребляет много памяти.

Не сейчас
источник