定位嵌套节点组失败并显示 "Minion did not return. [No response]",尽管如果通过其他条件定位主机会响应

Targeting nested nodegroups fails with "Minion did not return. [No response]", despite the hosts responding if targeted via other criteria

我对嵌套节点组有一个奇怪的问题,因为我似乎无法定位它们。这是我的主配置文件的节点组部分:


/etc/salt/master:

nodegroups:
  linuxlabs: 'E@^pubbox'
  linuxtest: 'N@linuxlabs'

下面是一个目标在嵌套节点组上失败的示例,尽管能够分别将父节点组和主机作为目标。

[root@salt-master ~]# salt 'pubbox10.example.com' test.ping
pubbox10.example.com:
    True

[root@salt-master ~]# salt 'pubbox44.example.com' test.ping
pubbox44.example.com:
    True

[root@salt-master ~]# salt -N linuxtest test.ping
pubbox10.example.com:
    Minion did not return. [No response]
pubbox44.example.com:
    Minion did not return. [No response]

[root@salt-master ~]# salt -N linuxlabs test.ping
pubbox44.example.com:
    True
pubbox10.example.com:
    True

添加“-l debug”或“-l trace”并没有真正揭示太多。实际上,在 -l 调试输出中,它表明嵌套节点组正在解析为其正确的主机名。在“-l trace”输出中,终端不断地收到相同消息的垃圾邮件:

[root@salt-master ~]# salt -N linuxtest test.ping -l trace
[DEBUG   ] Reading configuration from /etc/salt/master
...
[DEBUG   ] nodegroup_comp(linuxlabs) => ['(', 'E@^pubbox', ')']
[DEBUG   ] nodegroup_comp(linuxtest) => ['(', '(', 'E@^pubbox', ')', ')']
...
[TRACE   ] get_event() received = {'tag': 'salt/job/20160609132845009910/new', 'data': {'tgt_type': 'compound', 'jid': '20160
609132845009910', 'tgt': ['(', '(', 'E@^pubbox', ')', ')'], '_stamp': '2016-06-09T17:28:45.011228', 'user': 'root', 'arg': []
, 'fun': 'test.ping', 'minions': ['pubbox10.example.com', 'pubbox44.example.com']}}
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
...

^^ 此消息重复了 2000 多次,最终在几秒后结束于:

...
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[TRACE   ] _get_event() waited 0 seconds and received nothing
[DEBUG   ] LazyLoaded no_return.output
[TRACE   ] data = {'pubbox10.example.com': 'Minion did not return. [No response]'}
pubbox10.example.com:
    Minion did not return. [No response]
[DEBUG   ] LazyLoaded no_return.output
[TRACE   ] data = {'pubbox44.example.com': 'Minion did not return. [No response]'}
pubbox44.example.com:
    Minion did not return. [No response]

我在嵌套节点组上尝试了一些变体。例如,我没有让父级包含 "E@" 前缀,而是将其更改为 "L@" 并明确列出了主机名。相同的结果。


这是我的 salt --versions-report:

[root@salt-master ~]# salt --versions-report
Salt Version:
           Salt: 2015.8.10

Dependency Versions:
         Jinja2: 2.8
       M2Crypto: 0.24.0
           Mako: Not Installed
         PyYAML: 3.11
          PyZMQ: 15.2.0
         Python: 2.7.11 (default, Mar 24 2016, 22:19:35)
           RAET: 0.6.5
        Tornado: 4.3
            ZMQ: 4.1.4
           cffi: 1.5.2
       cherrypy: 3.2.3
       dateutil: Not Installed
          gitdb: Not Installed
      gitpython: Not Installed
          ioflo: 1.5.1
        libgit2: Not Installed
        libnacl: 1.4.4
   msgpack-pure: Not Installed
 msgpack-python: 0.4.7
   mysql-python: Not Installed
      pycparser: 2.14
       pycrypto: 2.6.1
         pygit2: Not Installed
   python-gnupg: Not Installed
          smmap: Not Installed
        timelib: Not Installed

System Versions:
           dist:   
        machine: i86pc
        release: 5.11

我是不是遇到了错误?还是我错误地配置了我的节点组?为了它的价值,我检查了这个版本和当前版本的 Salt 之间的发行说明,没有找到任何关于解决嵌套节点组问题的信息。

这似乎是一个错误。您介意在 SaltStack 的 github 问题跟踪器上打开一个问题吗? http://github.com/saltstack/salt/issues/new

谢谢!