ansible - 如果已创建 VM,Ansible vmware_guest customize_spec 不会更改任何内容
问题描述
背景:
我正在研究一些自动化,以便能够从内容库 OVF 模板部署 VM。我能够从 OVF 模板成功部署 VM,但是,当我尝试customization_spec
通过vmware_guest
模块应用模板时,它不会改变任何内容。模块运行,但只输出 OK 而不是更改。
我发现如果我尝试将其应用于customization_spec
我通过vmware_guest
模块从模板克隆的不同 VM,情况也是如此。我创建了一个单独的剧本,它只会进行自定义,所以不会有任何其他事情可以解决它,我正在使用静态名称等等,因为这是一些初始测试和开发。
不过,这很重要,如果我使用相同的vmware_guest
模块从模板中克隆 VM,它将克隆 VM 并customization_spec
在同一进程中应用它。由于环境,内容库部署是首选,但如果customization_spec
事后我不能部署,它有点毁了它。
我可以通过 vCenter 手动应用 VM 自定义,所以我知道自定义模板很好,并且如前所示,它在通过vmware_guest
模块克隆模板时确实有效。我没有看到它在 vCenter 中显示为一项任务,所以我知道它没有通过单独的模块生效。我还应该注意,我可以使用相同的vmware_guest
模块很好地启动虚拟机,如果我将这customization_spec
条线与它结合起来,它仍然不会在 vCenter 中启动来宾自定义。我是否遗漏了模块中的某些内容以强制其生效?
擦洗代码:
从模板克隆 - 自定义工作
- name: Clone the template with customizations - wait
vmware_guest:
hostname: {{ hostname }}
username: {{ username }}
password: {{ password }}
validate_certs: False
name: ansible_test_custom_yes_wait
template: def_Win2019
datacenter: {{ datacenter }}
datastore: {{ datastore }}
folder: {{ folder }}
state: poweredon
cluster: non-PRD v4
customization_spec: customization
wait_for_customization: yes
从内容库 ovf 克隆 - 没有自定义选项,但克隆有效
- name: Clone template from content library
community.vmware.vmware_content_deploy_ovf_template:
hostname: {{ hostname }}
username: {{ username }}
password: {{ password }}
content_library: {{ library }}
ovf_template: def_Win2019
datastore_cluster: {{ datastore_cluster }}
datacenter: {{ datacenter }}
folder: {{ folder }}
name: ansible_test_content_library
cluster: {{ cluster }}
validate_certs: false
设置 VM 自定义 - 创建 VM 后不起作用
- name: Set VM customization
vmware_guest:
hostname: {{ hostname }}
username: {{ username }}
password: {{ password }}
name: ansible_test_content_library
state: present
customization_spec: {{ customization }}
wait_for_customization: yes
解决方案
呃,我发誓,每次我在这里发布问题时,我都会在 5 分钟后找出解决方案......
问题是由于 VM 已经存在,您必须提供
customization:
existing_vm: True
在模块中。所以,它应该是这样的:
- name: Set VM customization
vmware_guest:
hostname: {{ hostname }}
username: {{ username }}
password: {{ password }}
name: ansible_test_content_library
state: present
customization:
existing_vm: True
customization_spec: {{ customization }}
wait_for_customization: yes
一旦它在那里,它将通过 VM customize_spec 运行。否则,该existing_vm
字段默认为 False,并且仅在克隆 VM 时应用。
推荐阅读
- java - 插件开发中如何在菜单上添加快捷键
- knockout.js - 如果两个依赖路径改变了 observable,则 Knockout 计算在单个操作上多次触发
- spring-mvc - 我如何在带有@GetMapping的控制器中使用不同的url和相同的方法?
- css - 使用库 react-photo-gallery 时如何在悬停时进行叠加
- php - 如何重构 create_function() 以迁移到 PHP 7.2
- feathersjs - Feathersjs - 多个身份验证端点
- c - 读取一个大文件并将数据放在正确的数组中,而不是过于口头
- python - 这个广场不动是有原因的吗?
- android - 如何在android studio中从一个活动导航到另一个活动的片段?
- swift - CodingKeys 一致性生成编译器错误