首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果已创建虚拟机,则Ansible vmware_guest customization_spec不会更改任何内容

如果已创建虚拟机,则Ansible vmware_guest customization_spec不会更改任何内容
EN

Stack Overflow用户
提问于 2021-10-20 16:18:33
回答 1查看 34关注 0票数 0

背景:

我正在进行一些自动化工作,以便能够从内容库OVF模板部署VM。我能够成功地从OVF模板部署VM,但是,当我尝试通过vmware_guest模块应用customization_spec模板时,它不会改变任何东西。模块运行,但输出正常,而不是更改。

我发现,如果我尝试将此customization_spec应用于我通过vmware_guest模块从模板克隆的不同VM,也会出现这种情况。我创建了一个单独的剧本,只做定制,这样就不会有任何其他事情让它出错,我正在使用静态名称和其他东西,因为这是一些初始的测试和开发。

不过,关键是,如果我使用相同的vmware_guest模块从模板克隆VM,它将克隆VM并在同一进程中应用customization_spec。由于环境的原因,内容库部署是首选的,但是如果我不能在事后部署customization_spec,它就会毁了它。

我可以通过vCenter手动应用VM定制,因此我知道定制模板是好的,并且如前所述,当通过vmware_guest模块克隆模板时,它确实可以工作。我没有看到它在vCenter中显示为一个任务,所以我知道它不会通过单独的模块生效。我还应该注意到,我可以使用相同的vmware_guest模块来很好地启动VM,并且如果我将customization_spec行与它结合使用,它仍然不会在vCenter中启动来宾定制。我是不是在模块中遗漏了一些东西来强制它生效?

清理后的代码:

从模板克隆-自定义工作

代码语言:javascript
复制
- 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克隆-没有自定义选项,但可以使用克隆

代码语言:javascript
复制
- 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后不起作用

代码语言:javascript
复制
- 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-20 16:33:51

呃,我发誓,每次我在这里发一个问题,我都会在5分钟后找到答案……

问题在于,由于VM已经存在,因此您必须提供

代码语言:javascript
复制
customization:
   existing_vm: True

在模块中。因此,它应该看起来像这样:

代码语言:javascript
复制
- 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 customization_spec运行。否则,该existing_vm字段默认为False,并且仅在克隆VM时应用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69649638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档