2016-09-23 45 views
1

我在遷移到Ansible角色模型的過程中,我有以下結構 -如何在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/瓦爾/ 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 } 

正如你在解放軍見ybook,我正在嘗試創建Windows 8.1虛擬機,但我無法弄清楚如何將角色中的vmname81傳遞給創建8.1虛擬機。此處提供的輸入需要由/tasks/main.yml中的with_items使用,以便創建三個Windows 8.1虛擬機。我也很想知道這是否可以以更好的方式完成。

回答

3

您不應該將VM名稱添加到角色,角色應該是通用的。

  • 更換with_items: "{{ vmname81 }}"with_items: "{{ vm_names }}"
  • 移動增值經銷商(vmname81vmname10)到你的劇本/主機/組瓦爾
  • 應用的作用是這樣的:

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

你可以通過任何值('{{vmname10}}')作爲'vm_names'。 –

+0

謝謝,我刪除了我以前的評論,因爲我發佈後已經想清楚了。一旦我嘗試一下,我會接受答案。 –