나는 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에 변경 사항이 적용되면 puppet은 puppet 서비스를 다시 시작해야 한다는 것을 인식하므로 자체적으로 충돌이 발생합니다.
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을 사용하여 puppet.conf를 올바르게 업데이트하는 방법을 알고 계십니까?
답변1
puppet 데몬은 다시 시작할 필요 없이 puppet.conf 파일의 변경 사항을 자동으로 인식합니다. 간단히 제거 subscribe => File["/etc/puppet/puppet.conf"]
하면 service { "puppet" ... }
모든 것이 계속 작동합니다.
꼭두각시도 그 자체로는 그럴 수 없습니다 ensure => running
. 다음과 같은 것을 사용하여상호 재시작그러나 꼭두각시가 cron이 실행 중인지 확인하고 cronjob이 꼭두각시가 실행 중인지 확인하면 작동합니다.
답변2
한 가지 해결책은 puppet을 데몬으로 실행하지 않고 cron에서 호출하는 것입니다. 많은 사람들이 이것을 선호하는 이유는 데몬이 많은 메모리를 소비하기 때문입니다.