xml - Ansible:虚拟模块 XML 错误

标签 xml ansible libvirt

我正在尝试使用 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 文件相同,知道第一个失败的原因吗?我总是更喜欢使用模块而不是自定义命令,所以我真的很想让第一个工作。

最佳答案

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 的 list 中的值。

关于xml - Ansible:虚拟模块 XML 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25968490/

相关文章:

java - 如何将带有命名空间的 XML 字符串解码为 Java 对象

java - XML 解析异常 org.xml.sax.SAXParseException cvc-elt.1

amazon-web-services - 如何使用ansible将文件夹递归上传到aws s3

windows-7 - Windows 7 在 kvm 上安装时停在 "starting windows"

linux - 有没有办法与 guest (centos 7)共享主机(ubuntu)文件系统?

virtualization - virsh list 命令未显示任何域

python - 从 xml 中删除签名

python - 如何在lxml中表达 `there is a child node in current node`

ansible - 使用 with_items 和寄存器进行迭代

ssh - Ansible-通过SSH代理连接(Socks4)