2014-09-22 56 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的库存值。