Ansible 循环遍历 jinja 模板的变量整数和增量值

标签 ansible jinja2

我有一个 ansible 剧本,我想循环一个整数并为每个创建的文件增加一个值,如下所示:

file_a :

name = a
number = 20

file_b

name = b
number = 21

playbook.yml

- name: Copy file from jinja template
  template:
    src: "jinja.j2"
    dest: "/file_{{ item }}"
    owner: "root"
    group: "root"
  with_items: "{{ jinja_var }}"

库存.yml

jinja_var:
  - a
  - b

jinja.j2

name = {{ item }}
number  =

我有一个使用 key、value 的字典的解决方案,但我不想修改 inventory.yml,所以我可以通过 jinja 文件给出一个增量整数

最佳答案

使用loop_control 。例如模板

shell> cat templates/jinja.j2 
name = {{ item }}
number = {{ index + offset }}

和剧本

shell> cat playbook.yml
- hosts: localhost
  vars:
    jinja_var: [a, b]
    offset: 20
  tasks:
    - template:
        src: jinja.j2
        dest: "files/file_{{ item }}"
      loop: "{{ jinja_var }}"
      loop_control:
        index_var: index

给予

shell> cat files/file_a 
name = a
number = 20

shell> cat files/file_b
name = b
number = 21

关于Ansible 循环遍历 jinja 模板的变量整数和增量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65339752/

相关文章:

docker - Ansible Docker 容器 - 克隆私有(private)仓库

ssh - Ansible:权限被拒绝(公钥、密码)

python - 从 flask-sqlalchemy 中的连接查询中读取

python - 如何使用 python 的 docxtpl 包生成多个 docx 文件,从而保留 docx 格式?

python - 神社 : How to override variables in super block?

python - 从 python3 检索 jinja2 模板变量

ansible - 为什么 kubespray ansible 无法匹配主机

split - 具有多个定界符的 ansible string.split()

python - Jinja2 忽略未找到对象的 UndefinedErrors

Ansible:使用 with_items 模块时如何跳过一些空项目?