如何从另一部戏中的另一部戏中引用注册变量?

时间:2018-11-07 07:00:46

标签: ansible

我需要检查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']

1 个答案:

答案 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

如果任何人都可以提供“正确的”方法或对我不起作用的原因,请随时发布另一个答案。