我有一个用于host-1的puppet模块进行一些文件交换。
是否有可能通知主机-2上的另一个木偶代理(即通知)关于在主机-1上进行的更改?
如果有可能,那么最好的做法是什么?
class fileexchangehost1 {
file { '/var/apache2/htdocs':
ensure => directory,
source => "puppet:///modules/${module_name}/var/apache2/htdocs",
owner => 'root',
group => 'root',
recurse => true,
purge => true,
force => true,
notify => Service['restart-Service-on-host-2'],
}
}
许多人已经提出了这个问题,并且在不同的时候,人们一直在谈论实现一项功能以使其成为可能。但这是不可能的,也不可能很快就会成为可能。
出口资源被认为是与此类似问题的早期解决方案,尽管有些例如here认为这不是一个好的解决方案,我现在看不到经常使用的出口资源。
我认为,现在,推荐的方法是保持简单,并使用像Puppet Bolt这样的东西来简单地在节点A上运行命令,然后在节点B上依次运行命令。
如果不是Puppet Bolt,你也可以使用MCollective的继任者,Choria,甚至是Ansible。
Puppet没有直接的方法来通知另一个主机上的服务。
那就是说,你能用exported resources吗?我们使用Icinga导出资源,因此一个主机为自己生成Icinga配置,然后将其导出到Icinga服务器,该服务器重新启动守护进程。
例如,在客户端主机上:
@@file { "/etc/icinga2/conf.d/puppet/${::fqdn}.conf":
ensure => file,
[...]
tag => "icinga_client_conf",
}
在主人主持人:
File <<| tag == "icinga_client_conf" |>> {
notify => Service['icinga2'],
}
在您的情况下,似乎没有导出资源,但这会为您提供工具来构建您需要的东西吗?