Jak mogę zarządzać puppet.conf za pomocą Puppet?

11

Używam marionetki do zarządzania serwerami Linux i różnymi usługami. Działa dobrze, z wyjątkiem samej usługi lalek .

Moja klasa lalek wygląda następująco:

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"]
  }
}

}

Gdy zmiana zostanie zastosowana w /etc/puppet/puppet.conf, kukiełka zauważy, że musi zrestartować usługę kukiełkową, a więc sama się zawiesi:

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

Czy wiesz, jak poprawnie zaktualizować puppet.conf za pomocą puppet?

Coren
źródło

Odpowiedzi:

10

Demon kukiełkowy automatycznie zauważy zmiany w pliku puppet.conf bez konieczności ponownego uruchamiania. Po prostu usuń subscribe => File["/etc/puppet/puppet.conf"]z service { "puppet" ... }i wszystko będzie nadal działać.

Kukiełka też nie może ensure => runningsama dla siebie. Jednak użycie czegoś takiego jak ponowne uruchomienie z użyciem kukiełki zapewniającej, że cron jest uruchomiony, i koleżeńską pracę zapewniającą, że lalka działa, będzie działać.

freiheit
źródło
Sprawdzę, czy to działa w poniedziałek, ale wydaje mi się bardzo dobre. Dzięki za wskaźnik na temat wzajemnego restartu.
Coren
1

Jednym z rozwiązań jest nie uruchamianie marionetki jako demona, ale wywołanie go z crona. To coś, co wiele osób woli, ponieważ dla nich demon zużywa dużo pamięci.

Nie teraz
źródło