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è)