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

How to pass vars file content in Ansible roles?

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

../roles/vms/tasks/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 }}"

../roles/vms/vars/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 VM,但我无法弄清楚如何在创建 8.1 VM 的角色中传递 vmname81。 /tasks/main.yml 中的 with_items 需要使用此处提供的输入,以便创建三个 Windows 8.1 VM。我也很想知道这是否可以用更好的方式完成。

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

  • with_items: "{{ vmname81 }}"替换为with_items: "{{ vm_names }}"
  • 将变量(vmname81vmname10)移动到您的 playbook/hosts/groups 变量
  • 像这样应用角色:

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