如何将 item.src 传递给 Ansible 中的模板?

如何将 item.src 传递给 Ansible 中的模板?

我有一个 Jinja2 模板,我想从我的 中将参数传递给它vars/main.yml

对于每组变量,我需要在远程服务器上生成一个单独的文件。

我的vars/main.yml结构如下:

List:
  - { src: [
        classPath1: xxx,
        classPath2: xxx, 
        contxtHost: xxx,
        logDir: xxx, 
        contxtRegion: xxx,
        .... 
        ],
      dest: xxxx 
    }
  - { src: [
        xxxx
        ], 
      dest: xxxx 
    }

在我的剧本中任务定义如下:

  - name: testing templates 
    template: "src=templates/sampletest.j2 
               dest=/path/in/Server/{{ item.dest }}
               owner=app 
               group=app 
               mode=0644"
    with_items: '{{ List }}'

我如何传递item.src给我的模板?

注意:我正在尝试根据每组变量生成多个文件,item.src并且文件名正在item.dest使用with_items

答案1

只需在 中引用它们templates/sampletest.j2,例如:

# start of the template
classPath1 is {{ item.src[0].classPath1 }}
classPath2 is {{ item.src[1].classPath2 }}
contxtHost is {{ item.src[2].contxtHost }}
...
# end of the template

对于模板上的每个项目,List都将被解析并保存到中定义的文件中dest


现在,问题是您的vars/main.yml文件定义src为字典列表(方括号),每个字典包含一个键值对(列表上每个项目中的键的名称不同),因此:

  • 首先,您需要按顺序引用列表项(例如src[1]
  • 然后,您需要引用在该特定项目中定义的键(例如,classPath2对于 并且仅适用于src[1])。

相关内容