ansible 在数组中使用循环

ansible Using loop in array

我在 vars 文件中有多个数组,我必须创建多个路径 每个 client 必须有 prodpreprod 路径 你能帮我在多个数组中设置多个循环吗? 对于“client”循环,它正在工作,但我不知道如何设置第二个循环数组“dev

vars.yml

client:
  - a
  - b

env:
  - prod
  - preprod

main.yml:

- name: This command will enable secret with specified path
  ansible.builtin.shell:
    cmd: vault secrets enable "{{enable_version2}}" -path="{{item}}_{{projet}}_{{service}}_{{env}}_{{read}}"  "{{secrets_type }}"
  with_items: "{{client}}"
  loop:    "{{client}}"

谢谢

简而言之:

---
- hosts: localhost
  gather_facts: false

  vars:

    client:
      - a
      - b

    env:
      - prod
      - preprod

    project: toto

    service: pipo

    read: bingo

  tasks:
    - name: create my path
      debug:
        msg: "{{ item.0 }}_{{ project }}_{{ service }}_{{ item.1 }}_{{ read }}"
      loop: "{{ client | product(env) | list }}"

给出:


TASK [create my path] *****************************************************************************
ok: [localhost] => (item=['a', 'prod']) => {
    "msg": "a_toto_pipo_prod_bingo"
}
ok: [localhost] => (item=['a', 'preprod']) => {
    "msg": "a_toto_pipo_preprod_bingo"
}
ok: [localhost] => (item=['b', 'prod']) => {
    "msg": "b_toto_pipo_prod_bingo"
}
ok: [localhost] => (item=['b', 'preprod']) => {
    "msg": "b_toto_pipo_preprod_bingo"
}

PLAY RECAP *****************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0