机器上的 Puppet 代理状态是什么?

33

我了解

puppet agent --disable "my message"  --verbose

但我希望在某个特定的机器上知道它的Puppet代理状态,但我不知道如何从中获取。

man puppet-agent

有没有一条命令可以告诉我代理是否已启用或禁用?

谢谢。

-

------------------- 编辑

CentOS release 6.6 (Final)

bash-4.1$ puppet --version
3.7.4
bash-4.1$ file /usr/bin/puppet 
/usr/bin/puppet: a /usr/bin/ruby script text executable
无论它是启用还是禁用,我始终会得到这个:
[root@p1al25 ~]# cat `sudo puppet agent --configprint agent_catalog_run_lockfile`
cat: /var/lib/puppet/state/agent_catalog_run.lock: No such file or directory
[root@p1al25 ~]# puppet agent --disable "my message"
[root@p1al25 ~]# cat `sudo puppet agent --configprint agent_catalog_run_lockfile`
cat: /var/lib/puppet/state/agent_catalog_run.lock: No such file or directory
[root@p1al25 ~]# service puppet status
puppet (pid  4387) is running...

这个有效,谢谢 daxlerod

[root@p1al25 ~]# service puppet status
puppet (pid  4387) is running...
[root@p1al25 ~]# puppet agent --disable "my message" --verbose
Notice: Disabling Puppet.
[root@p1al25 ~]# cat `puppet agent --configprint agent_disabled_lockfile` 
{"disabled_message":"reason not specified"}

什么操作系统?另外,开源Puppet还是Puppet Enterprise? - ptierno
see my edit. Thank you - Bob Yoplait
1
你不应该编辑你的问题来添加答案。 - dr_
4个回答

44

获取当前状态的一行代码:

cat `puppet agent --configprint agent_disabled_lockfile`

通常情况下,这必须以root身份运行,所以我使用:

sudo cat `sudo puppet agent --configprint agent_disabled_lockfile`

可能会有多种结果。

  • cat: \path\to\lock: No such file or directory 表示Puppet未被禁用。
  • 任何其他文本都表示Puppet已被禁用,文本是在使用puppet agent --disable 'reason'命令禁用Puppet时提供的原因。

你是对的 @BobYoplait,需要检查的配置选项是 agent_disabled_lockfile。我已经更新了我的回答。 - daxlerod
在 Windows 服务器上运行此程序不会返回相同的结果。代理可以启用,但仍然返回有效的锁定文件。 - whoisearth
3
我简直不敢相信Puppet代理没有更优雅的API,但经过大量研究,似乎你是正确的,唯一的方法就是编写那个笨拙的命令,并希望在此期间他们没有改变这个内部实现。太遗憾了。 - Pierluigi Vernetto

8
我想在这里发布一个更新的答案。
如果Puppet代理已禁用,则会有一个名为$vardir/state/agent_disabled.lock的文件。该文件还包含禁用原因,如果通过puppet agent --disable 'because reasons'给出原因的话。
您可以通过命令puppet config print vardir获取$vardir的值。
总结一下:
[me@linuxbox ~]# cat $(puppet config print vardir)/state/agent_disabled.lock

如果代理被禁用,您将会看到以下内容:
{"disabled_message":"because reasons"}

如果代理已启用,则会出现错误“找不到文件或目录”。

2

代理状态通常用于主从设置。

更多详细信息请参见:

https://docs.puppetlabs.com/learning/agent_master_basic.html

因为您可能会有两个可能的问题。一个是:

我的服务是否正在运行?
答案是运行您典型的服务命令(例如service puppet status)

还是,我的代理是否能够完全运行?

答案是使用命令 puppet agent --test


如果 Puppet 是作为 gem 安装的而不是作为软件包,则 service 命令不存在。 - ptierno

1

Mac OS X:

状态:

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

请注意,如果启用了此功能,它将返回:
service { 'puppet':
  ensure => 'stopped',
  enable => 'true',
}

开始:

sudo puppet resource service puppet ensure=running enable=true

停止:

sudo puppet resource service puppet ensure=stopped enable=false

奖励:我喜欢的一个技巧是:sudo --non-interactive。我在为具有sudo权限的用户编写脚本时使用它。如果计算机上没有sudoer,则此命令将失败,而不是阻止脚本执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接