首页 > 解决方案 > jinja模板的变量整数和增量值的Ansible循环

问题描述

我有一个可靠的剧本,我想循环一个整数并为每个创建的文件增加一个值,就像这样:

file_a :

name = a
number = 20

file_b

name = b
number = 21

剧本.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

神社.j2

name = {{ item }}
number  =

我有一个使用键、值的 dict 的解决方案,但我不想修改inventory.yml,所以我可以通过 jinja 文件给出一个递增的整数

标签: ansiblejinja2

解决方案


使用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

推荐阅读