循环浏览所有Jinja模板文件并复制到目标目录

时间:2019-02-18 04:02:46

标签: ansible jinja2

我在Ansible中已参数化的templates目录中有一个.jinja2模板集合。

└── roles
    ├── copyFiles
    │   ├── tasks
    │   │   └── main.yml
    │   └── templates
    │       ├── file.one.name.xml.jinja2
    │       ├── file.two.name.xml.jinja2
    │       ├── file.three.name.xml.jinja2
    |       ...

我想将文件复制到目标目录。但是,我不想在如下的with_items字典中指定每个单独的Jinja模板。

---
  - name: Copy the Configuration templates
    template:
      src: "templates/{{ item.src }}"
      dest: "target/{{ item.dest }}"
      owner: "{{ user}}"
      group: "{{ group }}"
      mode: 0644
    with_items:
      - { src: 'file.one.name.xml.jinja2', dest: 'file.one.name.xml' }
      - { src: 'file.two.name.xml.jinja2', dest: 'file.two.name.xml' }
      - { src: 'file.three.name.xml.jinja2', dest: 'file.three.name.xml' }
      ...

是否有一种方法可以动态地执行模板渲染并将模板复制到目标目录中的任何.jinja2文件?

1 个答案:

答案 0 :(得分:1)

我找到了办法。我使用正则表达式使用其相对路径列出了模板目录中的所有文件。然后使用regex_replace构造将用于目标文件的新名称:

create