2014-09-22 25 views
4

我想使用virt模塊和一個XML文件來定義一個虛擬機。此任務:Ansible:virt模塊XML錯誤

- name: Define VM using the XML file 
    virt: command=define 
     name={{ new_vm_name }} 
     xml={{ vm_images_path }}/{{ new_vm_xml }} 
    remote_user: root 
    delegate_to: "{{ hyperv }}" 

失敗,此錯誤:

failed: [vm-002 -> nat] => {"failed": true} 
msg: (domain_definition):1: Start tag expected, '<' not found 
/var/lib/libvirt/images//vm-002-ver1.1.0-00042.xml 

,而這個工程:

- name: Define VM using the XML file 
    command: virsh define {{ vm_images_path }}/{{ new_vm_xml }} 
    remote_user: root 
    delegate_to: "{{ hyperv }}" 

XML文件是在兩種情況下是相同的,爲什麼第一個失敗的任何想法?我總是喜歡使用模塊而不是自定義命令,所以我真的想讓第一個工作。

+0

您是否嘗試過'xml ='和/或'name ='的引用參數? – Mxx 2014-09-28 05:32:59

+0

對不起@Mxx的遲到迴應,但沒有奏效。我有同樣的錯誤!謝謝你的幫助。 – 2014-10-13 13:09:28

回答

3

virt模塊的參數xml採用XML字符串,而不是文件名。

你可以達到你想要的東西是這樣的:

- name: Define VM using the XML file 
    virt: command=define 
     name={{ new_vm_name }} 
     xml={{ lookup('template', './libvirt_create_template.j2') }} 
    remote_user: root 
    delegate_to: "{{ hyperv }}" 

您在查找引用該文件位於Ansible控制服務器(即,你運行你的劇本)上。

通過使用模板查找,可以使VM特定設置替換正在安裝的VM的庫存值。