Ansible:virt模块XML错误

时间:2014-09-22 07:14:11

标签: xml ansible libvirt

我尝试使用virt模块和XML文件定义VM。这个任务:

 - 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文件在两种情况下是相同的,任何想法为什么第一个失败?我总是喜欢使用模块而不是自定义命令,所以我真的很想让第一个工作。

1 个答案:

答案 0 :(得分:3)

xml模块的virt参数采用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的清单中的值。