Ansible vmware_guest_powerstate忽略state_change_timeout

问题描述 投票:0回答:1

也许我应该在github项目页面中问这个,但我不确定它是一个bug还是我无法使用该功能。

  tasks:
  - name: poweroff vms
    vmware_guest_powerstate:
    hostname: "{{ vcenter_ip }}"
    port: "{{ vcenter_port }}"
    username: "{{ vcenter_username }}"
    password: "{{ vcenter_password }}"
    validate_certs: "{{ vcenter_validate_certs }}"
    name: "{{ item.vm_name }}"
    state: shutdown-guest
    state_change_timeout: 300
  delegate_to: localhost
  loop: "{{ var_servidores}}"

使用此代码,我可以关闭属于列表“var_servidores”的vms,但无论“state_change_timeout”如何,播放都将立即完成。

我试着查看模块的代码,但是我没有发现这个“state_change_timeout”是如何被使用的......(我不是开发人员),因为它似乎只是坚固但从未真正被使用过(https://fossies.org/linux/ansible/lib/ansible/modules/cloud/vmware/vmware_guest_powerstate.py

如果我没有正确使用模块或者我是否应该在https://github.com/ansible/ansible中打开一个问题,请您提供建议。

谢谢!!! :)

python ansible
1个回答
1
投票

好吧,我只是无法使该模块按预期工作。所以我会在这里留下这个解决方法,以防其他人遇到同样的问题。

解决方法包括在循环中收集vm事实并运行它'直到'hw_power_state的条件关闭。

    - name: apaga las vms
      vmware_guest_powerstate:
        hostname: "{{ vcenter_ip }}"
        port: "{{ vcenter_puerto }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: "{{ vcenter_valida_certs }}"
        name: "{{ item.vm_nombre }}"
        state: shutdown-guest
        state_change_timeout: 300
      delegate_to: localhost
      loop: "{{ servidores }}"
      ignore_errors: true

    - name: espera hasta que las vms se apaguen
      vmware_guest_facts: 
        datacenter: "{{ vcenter_datacenter }}"
        hostname: "{{ vcenter_ip }}"
        port: "{{ vcenter_puerto }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        validate_certs: "{{ vcenter_valida_certs }}"
        name: "{{ item.vm_nombre }}"
      loop: "{{ servidores }}"
      register: energia
      until: energia.instance.hw_power_status == "poweredOff"
      retries: 30
      delay: 10
© www.soinside.com 2019 - 2024. All rights reserved.