如何在Ansible角色中传递vars文件内容?

时间:2016-09-23 09:31:28

标签: variables ansible ansible-playbook

我正在迁移到Ansible角色模型,我有以下结构 -

../角色/ VMS /任务/ main.yml

---
# To Create VMs on the VMware vCenter Server
  - name: Creation of Windows 8.1 VMs
    vsphere_guest:
      vcenter_hostname: "name"
      guest: "{{ item }}"
      from_template: yes
      template_src: "templatename"
      validate_certs: no
      esxi:
        datacenter: dc
        hostname: hname
    with_items: "{{ vmname81 }}"

../角色/ VMS /瓦尔/ main.yml

---
vmname81:
  - Client1
  - Client2
  - Client3


vmname10:
  - Client4
  - Client5

playbook.yml

---
# To Create VMs on the VMware vCenter Server
- hosts: localhost
  name: Creation of Windows 8.1 VMs
  roles:
    - { role: vms }

正如您在剧本中看到的,我正在尝试创建Windows 8.1虚拟机,但我无法弄清楚如何在创建8.1虚拟机的角色中传递vmname81。这里提供的输入需要由/tasks/main.yml中的with_items使用,以便创建三个Windows 8.1 VM。我也有兴趣知道这是否可以更好地完成。

1 个答案:

答案 0 :(得分:3)

您不应将VM名称添加到角色,角色应该是通用的。

  • with_items: "{{ vmname81 }}"替换为with_items: "{{ vm_names }}"
  • 将vars(vmname81vmname10)移至您的playbook / hosts / groups vars
  • 应用以下角色:

    - hosts: localhost
      name: Creation of Windows 8.1 VMs
      roles:
        - role: vms
          vm_names: "{{ vmname81 }}"