也许我应该在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中打开一个问题,请您提供建议。
谢谢!!! :)
好吧,我只是无法使该模块按预期工作。所以我会在这里留下这个解决方法,以防其他人遇到同样的问题。
解决方法包括在循环中收集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