是否可以通过木偶通知不同主机上的服务?

问题描述 投票:2回答:2

我有一个用于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'],
  }
}
service puppet host restart
2个回答
1
投票

许多人已经提出了这个问题,并且在不同的时候,人们一直在谈论实现一项功能以使其成为可能。但这是不可能的,也不可能很快就会成为可能。

出口资源被认为是与此类似问题的早期解决方案,尽管有些例如here认为这不是一个好的解决方案,我现在看不到经常使用的出口资源。

我认为,现在,推荐的方法是保持简单,并使用像Puppet Bolt这样的东西来简单地在节点A上运行命令,然后在节点B上依次运行命令。

如果不是Puppet Bolt,你也可以使用MCollective的继任者,Choria,甚至是Ansible。


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

在您的情况下,似乎没有导出资源,但这会为您提供工具来构建您需要的东西吗?

© www.soinside.com 2019 - 2024. All rights reserved.