我正在尝试使用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 }}" 失败
- 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控制服务器上(即您运行Playbooks的位置).
通过使用模板查找,您可以将VM特定设置替换为要安装的VM的清单中的值.