我需要检查VM是否存在。支票在一个“控制”游戏中注册,在另一个“生产”中引用。正确的格式是什么?
create_vm.yml:
axios
我尝试了不同的“何时”格式,但都失败了。
根据使用条件的格式,我有各种错误;以下是针对指定条件的。
---
- hosts: control
tasks:
- name: Check VM
virt:
command: "list_vms"
register: vms
- hosts: production
tasks:
- name: Create VM
STUFF
when: inventory_hostname not in groups['control']['vms']
答案 0 :(得分:0)
根据我所看到的,我应该能够使用对主机的引用来从另一个任务中引用注册值,但这对我不起作用。我将继续解决在主机上执行另一项检查的方法:生产过程如下。
(我正在对VM进行循环部署,因此委托方法变得复杂)
---
- hosts: control
tasks:
- name: Check VM
virt:
command: "list_vms"
register: vms
- hosts: production
tasks:
- name: Check VMs
virt:
command: "list_vms"
register: vms
delegate_to: '{{ groups["control"][play_hosts.index(inventory_hostname) % groups["control"]|length] }}'
条件如下:
when: inventory_hostname not in vms.list_vms
如果任何人都可以提供“正确的”方法或对我不起作用的原因,请随时发布另一个答案。