在Ansible中,条件语句when、until和循环语句loop可混合使用。当使用组合语句时,它们会按照以下顺序执行:
- 当条件语句when在循环语句loop内时,循环将在满足条件后执行。
示例代码:
- name: Loop over items and install packages when OS is CentOS
yum:
name: "{{ item }}"
state: installed
loop:
- package1
- package2
when: ansible_distribution == 'CentOS'
- 当使用条件语句until时,循环将在条件变为真时继续执行。
示例代码:
- name: Loop over items until condition is met
command: echo "{{ item }}"
loop: 1,2,3,4,5
until: "'3' in results.stdout_lines"
register: results
- 循环语句loop将运行在条件语句when和until之前。在循环语句loop的末尾,条件语句when和until应用。
示例代码:
- name: Loop over items and execute command if OS is CentOS
command: echo "{{ item }}"
loop:
- item1
- item2
when: ansible_distribution == 'CentOS'
until: "'3' in results.stdout_lines"
register: results