在ansible模板化yaml中使用jinja if子句(通过模板查找)

在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

我已经使用了ansible k8s模块,它有一个动态定义,我用

-名称:安装一些工具
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 %}