Ansible | 使用 with_* 系列语句对循环进行处理

带上清单

可以根据名字来展开列表。

- debug:
    msg: "{{ item }}"
  with_list:
    - hello
    - ansible
    - world

1. 放在努力的工作内容上

    • hello

 

    • ansible

 

    world

带索引项

可以获取要素的第几个位置。

在 item.0 中,按照元素的顺序排列,
在 item.1 中,存放元素。

从第二项开始,不再有其他选项。

- debug:
    msg: "{{ item.0 }} - {{ item.1 }}"
  with_indexed_items: ["hello", "ansible", "world"]

工作內容

    • 0 – hello

 

    • 1 – ansible

 

    2 – world

打平

即使是嵌套的数组也可以被平铺处理。

- debug:
    msg: "{{ item }}"
  with_flattened: ["hello", ["ansible", [["world"]]]]

产出的内容

    • hello

 

    • ansible

 

    world

一起

可以处理合并多个数组。

- debug:
    msg: "{{ item.0 }} {{ item.1 }} {{ item.2 }}"
  with_together:
    - ["hello1", "hello2", "hello3"]
    - ["ansible1", "ansible2", "ansible3"]
    - ["world1", "world2", "world3"]

产出内容

    • hello1 ansible1 world1

 

    • hello2 ansible2 world2

 

    hello3 ansible3 world3

使用字典

会使用词典。

- debug:
    msg: "{{ item.key }} {{ item.value}}"
  with_dict: { a: "hello", b: "ansible", c: "world" }

输出内容

    • a hello

 

    • b ansible

 

    c world

顺序

能够处理连续性。对于句子的构思。

从3开始,以3逐渐增加,直到达到9。

- debug:
    msg: "{{ item }}"
  with_sequence: start=3 end=9 stride=3 format=%02x

输出内容

    • 03

 

    • 06

 

    09

拥有子元素

有点难以理解,但是可以将主要元素传递给with_subelements的第一个参数,并在第二个参数中指定其子元素。

- debug:
    msg: "name : {{ item.0.name }} , like : {{ item.1 }}"
  with_subelements: 
    - 
      - name: "Alice"
        likes:
          - Apple
          - Banana
          - Microsoft
      - name: Bob
        likes:
        - Soccer
        - Basket
    - likes

提供的信息内容

    • name : Alice , like : Apple

 

    • name : Alice , like : Banana

 

    • name : Alice , like : Microsoft

 

    • name : Bob , like : Soccer

 

    name : Bob , like : Basket

和嵌套

展开所有传递元素的组合。例如,当传递包含两个元素的数组并选择“三种类型”时,将进行8次循环,这是2的3次方。

- debug:
    msg: "{{ item.0 }} {{ item.1 }} {{ item.2 }}"
  with_nested:
    - ["hello", "bye"]
    - ["ansible", "world"]
    - ["strong", "zero"]

工作内容

    • hello ansible strong

 

    • hello world zero

 

    • bye ansible strong

 

    • bye world zero

 

    • hello ansible strong

 

    • hello world zero

 

    • bye ansible strong

 

    bye world zero

随机选择

随机抽取,正如其名。

- debug:
    msg: "{{ item }}"
  with_random_choice: ["hello", "ansible", "world"]
  tags: with_random_choice

劳动的产出

ansible (ランダム抽出なので実行のたびに変わる)

环境

    ansible 2.5.4

请使用下面一种方式进行本地化转换:

    https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

招募聊天成员

如果您有任何问题、烦恼或需要咨询的事情,请随时使用LINE开放聊天进行沟通。

 

Twitter – 推特 (tuī tè)

 

广告
将在 10 秒后关闭
bannerAds