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

Bob*_*ait 27 puppet

我知道

puppet agent --disable "my message"  --verbose
Run Code Online (Sandbox Code Playgroud)

但是我想知道某台机器的某些地方,它的木偶代理状态是什么.我不知道怎么做

man puppet-agent
Run Code Online (Sandbox Code Playgroud)

是否有一个命令可以告诉我代理是启用还是禁用?

谢谢.

-

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

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
Run Code Online (Sandbox Code Playgroud)

------------------- EDIT2

无论是启用还是禁用,我总是这样:

[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...
Run Code Online (Sandbox Code Playgroud)

------------------- EDIT3

这个工作,感谢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"}
Run Code Online (Sandbox Code Playgroud)

dax*_*rod 34

获得当前状态的单行是:

cat `puppet agent --configprint agent_disabled_lockfile`
Run Code Online (Sandbox Code Playgroud)

通常,这必须以root身份运行,因此我使用:

sudo cat `sudo puppet agent --configprint agent_disabled_lockfile`
Run Code Online (Sandbox Code Playgroud)

有许多可能的结果.

  • cat: \path\to\lock: No such file or directory Puppet未被禁用.
  • 任何其他文本都意味着木偶被禁用,文本是木偶被禁用时提供的原因 puppet agent --disable 'reason'

  • 我不敢相信 Puppet 代理没有更优雅的 API,但经过大量研究,你似乎是对的,唯一的方法就是编写那个笨拙的命令,并希望同时他们没有改变这个内部实现。好难过。 (3认同)

dr0*_*r01 6

我以为我会在这里发布更新的答案。

如果禁用了Puppet代理,将有一个文件$vardir/state/agent_disabled.lock。如果已通过给出了原因,则该文件还包含禁用的原因puppet agent --disable 'because reasons'

您可以$vardir通过命令获取的值puppet config print vardir


总结一下:

[me@linuxbox ~]# cat $(puppet config print vardir)/state/agent_disabled.lock
Run Code Online (Sandbox Code Playgroud)

如果该代理已禁用,您将获得:

{"disabled_message":"because reasons"}
Run Code Online (Sandbox Code Playgroud)

如果启用了代理,则会出现错误“无此文件或目录”。