我有一个用于host-1的人偶模块,可以进行一些文件交换。
是否可以将主机1上的更改通知给主机2上的另一个another代理(即带有通知)?
如果可能的话,什么是最佳做法?
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'],
}
}
答案 0 :(得分:1)
许多人都问了这个问题,并且在不同时间都在谈论实现一项功能以使其成为可能。但这是不可能的,而且不可能在不久的将来实现。
尽管有一些方法可以解决类似问题的早期解决方案。 here认为这不是一个好的解决方案,而且我认为当今没有经常使用的导出资源。
我认为,如今,推荐的方法是保持简单,并使用Puppet Bolt之类的命令依次在节点A和节点B上简单地运行命令。
如果不是Puppet Bolt,您也可以为此使用MCollective的后继者Choria,甚至使用Ansible。
答案 1 :(得分:0)
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'],
}
在您的情况下,似乎没有正在导出的资源,但这是否可以为您提供构建所需内容的工具?