词典和列表上的一环

  • 本文关键字:一环 列表 ansible
  • 更新时间 :
  • 英文 :


我有一个以下格式的变量文件:

files:
   name: file1
   size: 50K
   location:
     - /var/tmp
     - /nfsvol
     - /tmp
    users:
     - user1
     - user2
     - user3

我希望使用词典和列表的某些循环以以下方式生成任务文件,并且可以将其传递给playbook:

- name: Build File Repo
  file_repo:
     name: file1
     size: 50K
     location:
       - user1
       - user2
       - user3
     users:
       - /var/tmp
       - /nfs_vol
       - /tmp

var文件可以包含许多"文件"块,我希望任务文件使用任务文件中指定的循环浏览整个var文件,以便可以在指定的主机上执行每个块。

var文件可以这样:

files:
   name: file1
   size: 50K
   location:
     - /var/tmp
     - /nfsvol
     - /tmp
    users:
     - user1
     - user2
     - user3
files:
   name: file2
   size: 53K
   location:
     - /var/tmp
     - /nfsvol
   users:
     - user5
     - user21

我尝试使用子元素,也遵循以下线程,但它不符合我的目的;带有列表的嵌套环和字典

不可能

使用任务中指定的循环浏览整个VAR文件

其中

var文件可以包含许多"文件"

的块

不可能拥有名为"文件"的"许多"变量。将所有"块"放在列表中,循环:" {{files}}"

files:
  - name: file1
    size: 50K
    location:
      - /var/tmp
      - /nfsvol
      - /tmp
    users:
      - user1
      - user2
      - user3
  - name: file2
    size: 53K
    location:
      - /var/tmp
      - /nfsvol
    users:
      - user5
      - user21

以下任务可能是您想要的。

tasks:
  - name: Touch files
    file:
      path: "{{ item.1 }}/{{ item.0.name }}"
      state: touch
    loop: "{{ lookup('subelements', files, 'location') }}"

最新更新