要在同一行中将项目的项放在其他项之前,可以使用Ansible的with_items和when语句来实现。
示例代码如下:
- name: Example playbook
hosts: all
tasks:
- name: Print items before others
debug:
msg: "{{ item }}"
with_items:
- item1
- item2
- item3
when: item != 'item2'
- name: Print item2
debug:
msg: "{{ item }}"
with_items:
- item1
- item2
- item3
when: item == 'item2'
在这个示例中,我们有三个项:item1,item2和item3。我们想要将item2放在其他项之前。
第一个任务使用debug模块打印所有不是item2的项。当项不等于item2时,when语句返回True,该任务会执行。
第二个任务使用debug模块打印item2。当项等于item2时,when语句返回True,该任务会执行。
运行这个playbook,你会看到item2在其他项之前被打印出来。
输出示例:
TASK [Print items before others] *********************************************************************************************************************
ok: [localhost] => (item=item1) => {
"msg": "item1"
}
ok: [localhost] => (item=item3) => {
"msg": "item3"
}
TASK [Print item2] *************************************************************************************************************************************
ok: [localhost] => (item=item2) => {
"msg": "item2"
}
这样,我们就可以在同一行中将项目的项放在其他项前面。