我正在处理一种盐栈状态,并在jinja2中封装了一些盐。
当我试图使用jinja2比较来自一个柱状物的值时,它的参数似乎是空值。
如果我使用salt查询该值,它将返回预期值。
我希望我在if语句中引用的值与jinja2不正确。
以下是理解和研究这个问题所需的所有信息:
盐母id是Salt。
Salt Minion id在同一个实例上,是same。
下面是柱顶文件:
base:
'salt-dev':
- docker-daemon.docker-daemon下面是位于/srv/pillar/docker-daemon/docker-daemon.sls的嵌套柱状文件
docker-daemon:
- action: start
- runlevel: enabled下面是salt命令的输出,该命令返回minion salt柱的内容:
# salt 'salt-dev' pillar.items
salt-dev:
----------
docker-daemon:
|_
----------
action:
start
|_
----------
runlevel:
enabled下面是我在if语句中使用的值的输出,其中jinja2中的值不返回任何内容,但是在cli中返回的值与这里预期的一样:
# salt 'salt-dev' pillar.get docker-daemon:action
salt-dev:
start不正确的jinja2行是:
{% if salt['pillar.get']('docker-daemon:action') == 'start' %}看起来:salt['pillar.get']('docker-daemon:action')什么也不返回,但是从cli (如上面所示)返回一些内容。
另外,如果我添加了一个默认值,这个值在这个arg没有返回任何东西的情况下使用,那么它也能工作。
添加默认值的一个示例是:
{% if salt['pillar.get']('docker-daemon:action', 'def_value') == 'start' %}我在下面的背景中说明了这一点:
下面是状态文件,其中if语句有相同的问题:
{% if ( (grains['osfinger'] == 'Oracle Linux Server-6') and (grains['osarch'] == 'x86_64')) %}
sync_docker-init:
file.managed:
- name: /etc/init.d/docker
- source: salt://docker-daemon/templates/docker-init
- user: root
- group: root
- mode: 755
action_docker-init:
{% if salt['pillar.get']('docker-daemon:action') == 'start' %}
service.running:
{% endif %}
{% if salt['pillar.get']('docker-daemon:action') == 'stop' %}
service.dead:
{% endif %}
- name: docker
- require:
- pkg: install_docker-engine
- watch:
- file: sync_docker-init
{% if salt['pillar.get']('docker-daemon:runlevel') == 'enabled' %}
-- enable: True
{% endif %}
{% if salt['pillar.get']('docker-daemon:runlevel') == 'disabled' %}
-- enable: False
{% endif %}
{% else %}
event.send:
- tag: 'salt/custom/docker-init/failure'
- data: "Management of docker init failed, OS not permitted."
{% endif %}我现在对盐和jinja2很陌生,所以这是101个东西,但是我很感谢你的帮助,我已经有几个小时没有发现任何东西了。
我试着重复这句话,好像我只是得到了一个空白行。
发布于 2015-10-30 13:29:49
我找到了解决办法。
柱状文件/srv/pillar/docker-daemon/docker-daemon.sls是作为一个列表而不是地图形成的。
我把它改成了这个
docker-daemon:
action: restart
runlevel: disabledhttps://stackoverflow.com/questions/33423009
复制相似问题