在Ansible中,可以使用条件语句来操作传递给角色的列表变量。下面是一个包含代码示例的解决方法:
创建一个名为"roles/conditional_task"的角色目录。
在"roles/conditional_task"目录下创建一个名为"main.yml"的任务文件。
编辑"main.yml"文件,并添加以下代码:
---
- name: Conditional Task
hosts: localhost
tasks:
- name: Print each item in the list
debug:
msg: "{{ item }}"
loop: "{{ my_list }}"
when: item == 'foo' # 检查每个列表项是否等于'foo'
在"roles/conditional_task"目录下创建一个名为"defaults/main.yml"的默认变量文件。
编辑"defaults/main.yml"文件,并添加以下代码:
---
my_list:
- foo
- bar
- baz
---
- name: Run conditional task
hosts: localhost
roles:
- conditional_task
ansible-playbook main.yml
运行结果将只打印出列表中等于'foo'的项,即:
TASK [conditional_task : Print each item in the list] ***********************
ok: [localhost] => (item=foo) => {
"msg": "foo"
}
这里的条件语句when: item == 'foo'
用于检查每个列表项是否等于'foo',符合条件的项将被打印出来。