【问题标题】:Disable Puppet agent runinterval禁用 Puppet 代理运行间隔
【发布时间】:2017-02-05 17:29:54
【问题描述】:

我在 CentOS Linux 7.2 版上使用以下 Puppet 版本:

# puppetserver -v
puppetserver version: 2016.5.0.11

我有一个 Win 代理节点,以后可能会有更多。 Win节点代理版本:

C:\Windows\system32>puppet --version
4.8.1

我想禁用代理 runinterval永久,以便在需要时从我的 Puppet 服务器推送。我看到几个链接并尝试将以下行放入 Puppet 服务器的 /etc/puppetlabs/puppet/puppet.conf 文件中。我还重新启动了服务器,但代理仍在获取目录。

[agent]
daemonize=false

我还想知道是否可以仅在特定节点上禁用runinterval。如果是,怎么做?

【问题讨论】:

  • 您有一个很好的答案来解释如何防止代理发出目录请求,但我不清楚您希望如何实现从主节点到其他节点的任何类型的推送。当然,不是通过 Puppet,除非这是我不知道的 PE 功能。 Puppet从未有推送功能,尽管在 Puppet 4 之前它有一个远程触发目录请求功能(这需要代理运行,但不一定配置为发出目录请求) .
  • 虽然我没有进入实现,但我认为mco 将有助于推动更改。在禁用代理服务的同时,这不可能吗?
  • 您可以使用 MCollective 使代理程序按需执行目录运行。如果这可以满足您的需求,那么很好。但是,从技术上讲,它不是推送,也不是核心 Puppet 促成的。这些细微差别对您来说可能并不重要。
  • 这是否意味着我必须保持代理服务启用?如果是这种情况,那么我可能必须将runinterval 设置为一个非常大的数字,使其有效地被禁用。
  • 不,如果您打算使用 MCollective 来触发目录运行,那么您不需要启用 Puppet 服务。我主要是指出,这样做在技术上并不是一种推动。这对您来说可能无关紧要,但在某些可能重要的细节上确实有所不同。例如,通过推送,代理不需要能够启动与主节点的连接,但通过您的方法,他们将需要能够这样做,即使他们只会在您选择的时间这样做。

标签: puppet puppet-enterprise


【解决方案1】:

您基本上在做的是停止 Puppet 服务。使用 puppet service 资源最容易做到这一点:

service { 'puppet':
  ensure => stopped,
  enable => false,
}

要仅在某些节点上执行此操作,只需为分类器或主站点清单中的相应节点定义提供它:

node /ones_to_disable/ {
  service { 'puppet':
    ensure => stopped,
    enable => false,
  }
}

这是实现push-style Puppet和禁用pull-style的简单常用方法。

【讨论】:

  • 我还在某处看到了--no-client 选项,但是我不确定如何在配置文件中使用它以及它适用于哪个文件。这比按照您指定的方式禁用服务更好吗?
  • @Technext 这超级简单,效果很好,可以满足您的需求。可能有比这更好的解决方案,但我还没有在我参与过 Puppet 实施的任何公司看到或实施过它。如果您尝试在配置文件中执行此操作,那么它将成为客户端并成为引导过程的一部分。这种方法只会自动适用于所有未来的节点订阅,这也是我们选择这条路线的原因之一。
  • 我理解您要解释的内容。即使我只是在寻找服务器端配置更改,因为它随时更容易维护。似乎--no-client 是一个客户端选项。我假设不是这样。 :) 虽然您的解决方案很简单,但我会先尝试一下,然后再更新您。
【解决方案2】:

如果你想在给定节点上禁用 Puppet 代理,你必须使用这个命令:puppet agent --disable。您可以指定在给定节点上禁用代理的原因。您可以提供的消息将在下次有人在节点上键入 puppet agent 时打印出来。

【讨论】:

  • 对于这两种情况,我正在寻找需要在 config 文件中完成的更改,而不是在命令行中。
猜你喜欢
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
  • 2018-03-19
  • 1970-01-01
相关资源
最近更新 更多