首页 文章

如何匹配dict中的columns属性的值?

提问于
浏览
1

我'm trying to write a state file that matches on a pillar value, but I'我不确定如何(或者是否可能)匹配dicts中支柱属性的值 . salt.module.match API文档没有详细说明,并且没有一个明显的方法富有成效:

root@ms-tapir:~ # salt clowder saltutil.refresh_pillar
clowder:
    None
root@ms-tapir:~ # salt clowder pillar.item wsgi_still
clowder:
    ----------
    wsgi_still:
        ----------
        foo:
            bar
        nginx_default:
            ----------
            directives:
                - return 444
root@ms-tapir:~ # salt clowder match.pillar 'wsgi_still["foo"]:bar'
clowder:
    False
root@ms-tapir:~ # salt clowder match.pillar "wsgi_still['foo']:bar"
clowder:
    False
root@ms-tapir:~ # salt clowder match.pillar "wsgi_still.foo:bar"
clowder:
    False

我调试情况的尝试得到了在match.py中保持 pdb_trace() 并在前台运行salt-minion,但这完全没用,导致通信错误而不是调试shell,可能是由于Salt与ØMQ的奇怪交互 . :)

为了澄清,目标是在我的 /srv/salt/top.sls 文件中有这样的工作:

base:
  'wsgi_still["foo"]:bar':
    - match: pillar
    - wsgi_distiller

我确认 salt clowder match.pillar "foo:bar" 适合我的设置(返回 True ),当 foo: bar 在这个小兵的支柱中 .

另外,我认为从不同的角度来看这也是同样的问题:

root@ms-tapir:~ # salt -I "foo:bar" test.ping
clowder:
    True
root@ms-tapir:~ # salt -I "wsgi_still['foo']:bar" test.ping

我只是把它包括在内,因为'使用-I'标志是迄今为止我收到的唯一建议 . :)

1 回答

  • 2

    支柱数据中的嵌套dicts按以下方式访问:

    salt -I "wsgi_still:foo:bar" test.ping
    

    在topfile中进行匹配也是如此:

    base:
      'wsgi_still:foo:bar':
        - match: pillar
        - wsgi_distiller
    

相关问题