2

我正在尝试编写一个与支柱值匹配的状态文件,但我不确定如何(或是否可能)匹配 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

我尝试调试这种情况的方法是pdb_trace()在 match.py​​ 中插入一个并在前台运行 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”标志。:)

4

1 回答 1

3

通过以下方式访问支柱数据中的嵌套字典:

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

topfile 中的匹配也是如此:

base:
  'wsgi_still:foo:bar':
    - match: pillar
    - wsgi_distiller
于 2014-02-08T04:08:07.953 回答