在ansible模板化yaml中使用jinja if子句(通过模板查找)
我已经使用了ansible k8s模块,它有一个动态定义,我用在ansible模板化yaml中使用jinja if子句(通过模板查找),ansible,ansible-template,Ansible,Ansible Template,我已经使用了ansible k8s模块,它有一个动态定义,我用 -名称:安装一些工具 k8s: 国家:现在 定义:“{lookup('template',{{item}')}” 上下文:“{cluster_name}}” 循环: -“tool_template.yaml” 在模板中,我希望有一个条件块,使用ansible角色中的变量(is_major) 元数据: 标签: 应用程序:工具名称 {%if为| bool%} 注释: ad.datadoghq.com/container.check_n
-名称:安装一些工具
k8s:
国家:现在
定义:“{lookup('template',{{item}')}”
上下文:“{cluster_name}}”
循环:
-“tool_template.yaml”
在模板中,我希望有一个条件块,使用ansible角色中的变量(is_major
)
元数据:
标签:
应用程序:工具名称
{%if为| bool%}
注释:
ad.datadoghq.com/container.check_name:“[“openmetrics”]”
ad.datadoghq.com/container.init_configs:“[{}]”
ad.datadoghq.com/container.instances:|
[{
“普罗米修斯url”:http://pathto:port/,
“名称空间”:“myapp”,
“度量”:[“sometric*”]
}]
{%endif%}
不幸的是,这引发了一个ansible异常,并且在文档中找不到如何做到这一点的线索(至少是最近的文档),这可能是我正在模板化yaml的事实。因此,正在寻找解决方案/解决方法
ansible版本2.9
编辑:完全错误(带vvv)
完整的回溯是:
回溯(最近一次呼叫最后一次):
文件“/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864848/AnsiballZ_k8s.py”,第102行,在
_ansiballz_main()
文件“/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-2075699898986498/AnsiballZ_k8s.py”,第94行,位于AnsiballZ_main
调用_模块(压缩的_模块、临时路径、ANSIBALLZ_参数)
调用模块中的文件“/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-20756799864998/AnsiballZ_k8s.py”,第40行
runpy.run_模块(mod_name='ansible.modules.clustering.k8s.k8s',init_globals=None,run_name=''main_uuuuu',alter_sys=True)
文件“/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py”,第205行,在run_模块中
返回\u运行\u模块\u代码(代码、初始化全局、运行\u名称、模块规格)
文件“/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py”,第96行,在运行模块代码中
模块名称、模块规格、组件名称、脚本名称)
文件“/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py”,第279行,中
文件“/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py”,第275行,主视图
文件“/tmp/ansible\u k8s\u payload\u d7uua9ug/ansible\u k8s\u payload.zip/ansible/module\u utils/k8s/raw.py”,第145行,在__
文件“/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py”,第145行,in
文件“/home/username/.local/lib/python3.6/site packages/yaml/_init__.py”,第130行,全部加载
产量加载器。获取_数据()
get_数据中第37行的文件“/home/username/.local/lib/python3.6/site packages/yaml/constructor.py”
返回self.construct\u文档(self.get\u节点())
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第27行,在get_节点中
返回self.compose_文档()
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第55行,在compose_文档中
node=self.compose\u节点(无,无)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第84行,在compose_节点中
node=self.compose\u mapping\u节点(锚定)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第133行,在compose\u mapping\u节点中
item\u value=self.compose\u节点(节点,item\u键)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第84行,在compose_节点中
node=self.compose\u mapping\u节点(锚定)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第133行,在compose\u mapping\u节点中
item\u value=self.compose\u节点(节点,item\u键)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第84行,在compose_节点中
node=self.compose\u mapping\u节点(锚定)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第133行,在compose\u mapping\u节点中
item\u value=self.compose\u节点(节点,item\u键)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第84行,在compose_节点中
node=self.compose\u mapping\u节点(锚定)
文件“/home/username/.local/lib/python3.6/site packages/yaml/composer.py”,第127行,在compose\u mapping\u节点中
而不是自我检查事件(MappingEndEvent):
文件“/home/username/.local/lib/python3.6/site packages/yaml/parser.py”,第98行,在check\u事件中
self.current_event=self.state()
文件“/home/username/.local/lib/python3.6/site packages/yaml/parser.py”,第428行,在parse\u block\u mapping\u键中
如果自校验令牌(KeyToken):
文件“/home/username/.local/lib/python3.6/site packages/yaml/scanner.py”,第116行,检查令牌
self.fetch\u更多\u令牌()
文件“/home/username/.local/lib/python3.6/site packages/yaml/scanner.py”,第223行,在fetch\u more\u令牌中
返回self.fetch_值()
文件“/home/username/.local/lib/python3.6/site packages/yaml/scanner.py”,第579行,在fetch_值中
self.get_mark())
yaml.scanner.ScannerError:此处不允许映射值
在“”第18行第24列中:
注释:
^
失败:[localhost](item=aks/monitor/datadog/datadog代理守护程序集.yaml)=>{
“ansible_loop_var”:“项目”,
“更改”:错误,
“项”:“aks/monitor/datadog/datadog代理守护程序集.yaml”,
“module_stderr:“Traceback(最近一次调用):\n File\”/home/username/.ansible/tmp/ansible-tmp-158871658.967364-29993-2075699869864998/AnsiballZ_k8s.py\”,第102行,在\n_AnsiballZ_main()\n File\“/home/username/.ansible/tmp/ansible/ansible-tmp-158871658.967364-29993-20759799864998/AnsiballZ.py\”,第94行,在_ansiballz_main\n invoke_modu中
The full traceback is:
Traceback (most recent call last):
File "/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py", line 102, in <module>
_ansiballz_main()
File "/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py", line 94, in _ansiballz_main
invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)
File "/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py", line 40, in invoke_module
runpy.run_module(mod_name='ansible.modules.clustering.k8s.k8s', init_globals=None, run_name='__main__', alter_sys=True)
File "/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py", line 205, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File "/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py", line 279, in <module>
File "/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py", line 275, in main
File "/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py", line 145, in __init__
File "/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py", line 145, in <listcomp>
File "/home/username/.local/lib/python3.6/site-packages/yaml/__init__.py", line 130, in load_all
yield loader.get_data()
File "/home/username/.local/lib/python3.6/site-packages/yaml/constructor.py", line 37, in get_data
return self.construct_document(self.get_node())
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 27, in get_node
return self.compose_document()
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 55, in compose_document
node = self.compose_node(None, None)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 133, in compose_mapping_node
item_value = self.compose_node(node, item_key)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 84, in compose_node
node = self.compose_mapping_node(anchor)
File "/home/username/.local/lib/python3.6/site-packages/yaml/composer.py", line 127, in compose_mapping_node
while not self.check_event(MappingEndEvent):
File "/home/username/.local/lib/python3.6/site-packages/yaml/parser.py", line 98, in check_event
self.current_event = self.state()
File "/home/username/.local/lib/python3.6/site-packages/yaml/parser.py", line 428, in parse_block_mapping_key
if self.check_token(KeyToken):
File "/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py", line 116, in check_token
self.fetch_more_tokens()
File "/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py", line 223, in fetch_more_tokens
return self.fetch_value()
File "/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py", line 579, in fetch_value
self.get_mark())
yaml.scanner.ScannerError: mapping values are not allowed here
in "<unicode string>", line 18, column 24:
annotations:
^
failed: [localhost] (item=aks/monitor/datadog/datadog-agent-daemonset.yaml) => {
"ansible_loop_var": "item",
"changed": false,
"item": "aks/monitor/datadog/datadog-agent-daemonset.yaml",
"module_stderr": "Traceback (most recent call last):\n File \"/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py\", line 102, in <module>\n _ansiballz_main()\n File \"/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/home/username/.ansible/tmp/ansible-tmp-1588716858.967364-29993-207569799864998/AnsiballZ_k8s.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible.modules.clustering.k8s.k8s', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py\", line 205, in run_module\n return _run_module_code(code, init_globals, run_name, mod_spec)\n File \"/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py\", line 96, in _run_module_code\n mod_name, mod_spec, pkg_name, script_name)\n File \"/home/username/.pyenv/versions/3.6.6/lib/python3.6/runpy.py\", line 85, in _run_code\n exec(code, run_globals)\n File \"/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py\", line 279, in <module>\n File \"/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/modules/clustering/k8s/k8s.py\", line 275, in main\n File \"/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py\", line 145, in __init__\n File \"/tmp/ansible_k8s_payload_d7uua9ug/ansible_k8s_payload.zip/ansible/module_utils/k8s/raw.py\", line 145, in <listcomp>\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/__init__.py\", line 130, in load_all\n yield loader.get_data()\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/constructor.py\", line 37, in get_data\n return self.construct_document(self.get_node())\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 27, in get_node\n return self.compose_document()\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 55, in compose_document\n node = self.compose_node(None, None)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 84, in compose_node\n node = self.compose_mapping_node(anchor)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 133, in compose_mapping_node\n item_value = self.compose_node(node, item_key)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 84, in compose_node\n node = self.compose_mapping_node(anchor)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 133, in compose_mapping_node\n item_value = self.compose_node(node, item_key)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 84, in compose_node\n node = self.compose_mapping_node(anchor)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 133, in compose_mapping_node\n item_value = self.compose_node(node, item_key)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 84, in compose_node\n node = self.compose_mapping_node(anchor)\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/composer.py\", line 127, in compose_mapping_node\n while not self.check_event(MappingEndEvent):\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/parser.py\", line 98, in check_event\n self.current_event = self.state()\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/parser.py\", line 428, in parse_block_mapping_key\n if self.check_token(KeyToken):\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py\", line 116, in check_token\n self.fetch_more_tokens()\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py\", line 223, in fetch_more_tokens\n return self.fetch_value()\n File \"/home/username/.local/lib/python3.6/site-packages/yaml/scanner.py\", line 579, in fetch_value\n self.get_mark())\nyaml.scanner.ScannerError: mapping values are not allowed here\n in \"<unicode string>\", line 18, column 24:\n annotations:\n ^\n",
"module_stdout": "",
"msg": "MODULE FAILURE\nSee stdout/stderr for the exact error",
"rc": 1
}
- name: install some tool
k8s:
state: present
definition: "{{ lookup('template', item) }}"
context: "{{ cluster_name}}"
with_items:
- "tool_template.yaml"
metadata:
labels:
app: tool_name
annotations:
ad.datadoghq.com/container.check_names: '["openmetrics"]'
ad.datadoghq.com/container.init_configs: '[{}]'
ad.datadoghq.com/container.instances: |
[{
"prometheus_url": "http://pathto:port/,
"namespace": "myapp",
"metrics": ["somemetric*"]
}]
metadata:
labels:
app: tool_name
{% if is_major | bool %}
annotations:
ad.datadoghq.com/container.check_names: '["openmetrics"]'
ad.datadoghq.com/container.init_configs: '[{}]'
ad.datadoghq.com/container.instances: |
[{
"prometheus_url": "http://pathto:port/,
"namespace": "myapp",
"metrics": ["somemetric*"]
}]
{% endif %}