在Jinja2模板中循环Ansible变量数组以创建嵌套字典

萨拉·詹姆斯(Sara James)

这是输出。

"result.containers":[
   {
      "Image":"ca.docker/webproxy:1.0.0",
      "Names":[
         "/customer1"
      ]
   },
   {
      "Image":"docker.local/egacustomer:1.0.1",
      "Names":[
         "/webproxy"
      ]
   }
]

我正在尝试使用jinja2创建嵌套字典。我正在尝试使用results.container和setfact实现以下目标。

"containerlist": "[webproxy:
                     name: customer1,
                   egacustomer:
                     name: webproxy]"

这是我的jinja2代码。

- set_fact:
      containerlist: |
           [
           {% for item in result.containers %}
           {{ item.Image | regex_replace('.*?/(.*?):.*', '\\1') }}:
                     'name': {{ item.Names | regex_replace("^/", "") }},
           {% endfor %}
         

引发错误。有人可以通过正确的Jinja2代码帮助我,任何帮助将不胜感激

"containerlist": "[\n\\1:\n          'name': ['/customer'],\n\\1:\n          'name': ['/webproxy'],\n,\n]\n"
幼虫

对于您要执行的操作,我将使用Ansible循环任务进行标准化,而不是尝试使用Jinja{% for ... %}循环。例如,这些任务...

    - set_fact:
        container_list: >-
          {{
          container_list + [{
            item.Image.split('/')[-1].split(':')[0]:
              item.Names[0][1:]
          }]
          }}
      loop: "{{ result.containers }}"
      vars:
        container_list: []

    - debug:
        var: container_list

set_fact任务中,我们正在遍历result.containers,对于循环的每次迭代,我们将其重新定义container_list为“ container_list+新字典的当前内容”。

上面产生了以下输出:

TASK [set_fact] ****************************************************************
ok: [localhost] => (item={'Image': 'ca.docker/webproxy:1.0.0', 'Names': ['/customer1']})
ok: [localhost] => (item={'Image': 'docker.local/egacustomer:1.0.1', 'Names': ['/webproxy']})

TASK [debug] *******************************************************************
ok: [localhost] => {
    "container_list": [
        {
            "webproxy": "customer1"
        },
        {
            "egacustomer": "webproxy"
        }
    ]
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Jinja2中显示嵌套字典

来自分类Dev

jinja2模板中字典的格式和使用

来自分类Dev

Jinja2模板中嵌套菜单的最佳实践

来自分类Dev

包含模板中的Jinja2变量

来自分类Dev

在模板中访问jinja2全局变量

来自分类Dev

在ansible上检查Jinja2模板中的字典中是否存在密钥

来自分类Dev

如何在jinja2模板中构建此循环

来自分类Dev

在Jinja2中嵌套循环

来自分类Dev

Ansible var jinja2模板

来自分类Dev

格式化嵌套的Python字典以在jinja2模板中呈现的最佳方法

来自分类Dev

嵌套循环在Ansible Jinja模板中

来自分类Dev

Jinja2嵌套循环模板,用于处理两个列表中的Ansible YAML变量

来自分类Dev

用Ansible变量填充Jinja2模板?

来自分类Dev

使用url作为我的jinja2模板中的变量?

来自分类Dev

Ansible / Jinja2模板:for循环运行两次

来自分类Dev

使用Jinja2在ansible中创建字典列表时出现问题

来自分类Dev

如何在Jinja2 Ansible中将嵌套字典另存为变量?

来自分类Dev

jinja2模板中字典的格式和使用

来自分类Dev

在Python Flask应用程序Jinja2模板中创建二维数组

来自分类Dev

Ansible中的if语句与Jinja2变量

来自分类Dev

如何在jinja2模板中构建此循环

来自分类Dev

在Jinja2模板中调用构造的变量名称?

来自分类Dev

如何使用for循环在Ansible Jinja2模板中的一行中添加一列?

来自分类Dev

Jinja2 与 Ansible,循环中的多个变量

来自分类Dev

如何填充存储在 Ansible 变量中的 Jinja2 模板?

来自分类Dev

迭代 Jinja2 模板中的字典列表

来自分类Dev

Ansible 嵌套循环和 jinja2 过滤器

来自分类Dev

Ansible jinja2 模板使用变量进行查找

来自分类Dev

Ansible /Jinja2 引用列表项中的变量键是相同的字典

Related 相关文章

热门标签

归档