我正在使用jinja2包裹盐的盐栈状态。
当我尝试使用jinja2比较支柱中的值时,似乎参数评估为空。
如果我使用salt cli查询该值,则返回预期值。
我希望我在使用jinja2的if语句中错误地引用该值。
以下是了解和查看此问题所需的所有信息:
Salt Master id是salt-dev
Salt Minion id在同一个实例上,并且是salt-dev
这是支柱顶部文件:
base:
'salt-dev':
- docker-daemon.docker-daemon
以下是位于/srv/pillar/docker-daemon/docker-daemon.sls
docker-daemon:
- action: start
- runlevel: enabled
这是salt cli命令的输出,返回minion salt-dev的支柱内容:
# 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')
没有返回任何内容,但是如上所示,它会返回一些内容。
此外,如果我添加一个默认值,该值在此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件事,但我会感谢一些帮助,我已经找不到几个小时了。
我试图回应这个,似乎我得到一个空白
答案 0 :(得分:1)
我找到了解决方案。
支柱文件$w = 0
While($w = 0)
If(WinActive("ERROR WINDOW"))Then
Send("{ENTER}")
$w = 1
ElseIf(ControlGetText("YOUR WINDOW", "", "[CLASS:Static; INSTANCE:2]") <> "SOME TEXT") Then
$w = 1
;and something else
EndIf
Sleep(1000)
WEnd
形成为列表而非地图。
我把它更改为:
/srv/pillar/docker-daemon/docker-daemon.sls