在Ansible中,with_items
指令用于遍历一个列表,并对列表中的每个元素执行一组任务。双冒号(::
)用于指定一个任务块,它可以在执行每个元素时重复使用。
以下是一个包含双冒号的示例代码:
- name: Example playbook
hosts: localhost
gather_facts: false
tasks:
- name: Print item
debug:
msg: "{{ item }}"
with_items:
- item1
- item2
- item3
- name: Execute task block
block:
- name: Task 1
debug:
msg: "This is task 1 for item: {{ item }}"
- name: Task 2
debug:
msg: "This is task 2 for item: {{ item }}"
with_items: "{{ my_items }}"
在上面的示例中,首先使用with_items
遍历一个简单的列表,并打印每个元素。然后,在第二个任务中,使用block
指令指定一个任务块,并使用with_items
遍历一个名为my_items
的变量,以执行任务块中的每个任务。
要运行这个示例,可以将上述代码保存为一个名为example.yml
的文件,并使用以下命令执行:
ansible-playbook example.yml
请注意,在Ansible 2.5及更高版本中,with_items
已被弃用,推荐使用loop
指令替代。使用loop
的示例代码如下:
- name: Execute task block
block:
- name: Task 1
debug:
msg: "This is task 1 for item: {{ item }}"
- name: Task 2
debug:
msg: "This is task 2 for item: {{ item }}"
loop: "{{ my_items }}"
希望以上解决方法能对你有所帮助!