也许我应该在github项目页面上问这个,但是我不确定这是一个错误还是只是我无法使用该功能。
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”的vm,但是无论“ 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中打开问题,请提出建议。
谢谢!!! :)
答案 0 :(得分: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