是否可以使用 puppet 通知不同主机上的服务?
Is it possible to notify a service on a different host with puppet?
我有一个 puppet 模块供 host-1 执行一些文件交换。
是否可以将在 host-1 上所做的更改通知 host-2 上的另一个 puppet 代理(即通过通知)?
如果可能的话,最佳实践方法是什么?
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'],
}
}
Puppet 无法直接通过另一台主机的清单通知一台主机上的服务。
也就是说,您可以为此使用 exported resources 吗?我们使用 Icinga 导出的资源,因此一台主机为自己生成 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'],
}
在您的情况下,似乎没有资源被导出,但这会为您提供工具来构建满足您需要的东西吗?
很多人都问过这个问题,并且在不同时期都在讨论实现一项功能以使其成为可能。但这不可能,而且短期内也不太可能。
导出资源被认为是解决类似问题的早期解决方案,尽管有些例如here 认为这不是一个好的解决方案,而且我没有看到现在经常使用导出的资源。
我认为,如今,推荐的方法是保持简单,并使用类似 Puppet Bolt 的东西来简单地在节点 A 上执行 运行 命令,然后在节点 B 上,在订单。
如果不是 Puppet Bolt,您也可以使用 MCollective 的继任者,Choria,甚至是 Ansible。
我有一个 puppet 模块供 host-1 执行一些文件交换。
是否可以将在 host-1 上所做的更改通知 host-2 上的另一个 puppet 代理(即通过通知)?
如果可能的话,最佳实践方法是什么?
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'],
}
}
Puppet 无法直接通过另一台主机的清单通知一台主机上的服务。
也就是说,您可以为此使用 exported resources 吗?我们使用 Icinga 导出的资源,因此一台主机为自己生成 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'],
}
在您的情况下,似乎没有资源被导出,但这会为您提供工具来构建满足您需要的东西吗?
很多人都问过这个问题,并且在不同时期都在讨论实现一项功能以使其成为可能。但这不可能,而且短期内也不太可能。
导出资源被认为是解决类似问题的早期解决方案,尽管有些例如here 认为这不是一个好的解决方案,而且我没有看到现在经常使用导出的资源。
我认为,如今,推荐的方法是保持简单,并使用类似 Puppet Bolt 的东西来简单地在节点 A 上执行 运行 命令,然后在节点 B 上,在订单。
如果不是 Puppet Bolt,您也可以使用 MCollective 的继任者,Choria,甚至是 Ansible。