是否可以使用Puppet通知其他主机上的服务?

时间:2019-04-02 07:17:23

标签: service puppet host restart

我有一个用于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'],
  }
}

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'],
}

在您的情况下,似乎没有正在导出的资源,但这是否可以为您提供构建所需内容的工具?