Чего ждать после перезагрузки виртуальной машины VmWare в Ansible vsphere, чтобы убедиться, что состояние загружено?

Я развертываю некоторые слабо поддерживаемые ОС, такие как Debian 9, Debian 8, Rehhat 6,7, Centos 7.

Конфигурация IP не поддерживается во время загрузки, поэтому я добавляю только VLAN/виртуальный сетевой интерфейс, затем использую vmware_vm_shell для пошаговой настройки ОС.

То, что я ищу, - это уловка, чтобы дождаться события, такого как /proc/net/dev, существует на удаленной виртуальной машине, чтобы продолжить другие шаги.

Что я пробовал до сих пор:

- hosts: localhost
  tasks:
  - name: Create a virtual machine "{{ vm_name }}"
    vmware_guest:
      datacenter: '{{ datacenter }}'
      hostname: '{{ vcenter }}'
      username: "{{ login }}"
      password: "{{ passwd }}"
      folder: "{{ folder }}"
      name: "{{ vm_name }}"
      template: '{{ template }}'
      cluster: "{{ cluster }}"
      state: poweredon
      disk:
      - size_gb: "{{ disksizeGB }}"
        datastore: '{{ datastore }}'
      hardware:
        memory_mb: '{{ ramsizeMB }}'
        num_cpus: '{{ vcpu_num }}'
        hotadd_cpu: True
        hotremove_cpu: True
        hotadd_memory: True
      networks: '{{ vlans }}'
      #wait_for_ip_address: yes # ERR there's ifaces, but not ip at this time
    register: deploy

  - name: Wait for server to start
    local_action:
      module: wait_for
        timeout=15
    when: deploy.changed

Последний блок кода ожидания отстой (ожидание N секунд), хотелось бы что-нибудь поумнее.

Есть идеи ?

Если я не буду ждать, я иногда получаю сообщение об ошибке: fatal: [localhost]: FAILED! => {"changed": false, "msg": "VMWareTools is not installed or is not running in the guest. VMware Tools are necessary to run this module."} , потому что виртуальная машина не загружена. Шаблон есть vmware-tools.

https://docs.ansible.com/ansible/2.6/modules/vmware_guest_module.html#vmware-guest-module https://docs.ansible.com/ansible/latest/modules/vmware_vm_shell_module.html


person Mévatlavé Kraspek    schedule 24.10.2018    source источник


Ответы (1)


Ок, нашел себя :)

  - name: wait for server to boot
    vmware_vm_shell:
      datacenter: '{{ datacenter }}'
      hostname: 'vcenter{{ vcenter }}'
      username: "{{ login }}"
      password: "{{ passwd }}"
      validate_certs: False
      folder: "{{ folder }}"
      vm_id: "{{ vm_name }}"
      cluster: "{{ cluster }}"
      vm_password: '{{ passwd }}'
      vm_username: root
      vm_shell: '/bin/sleep'
      vm_shell_args: 0
    when: deploy.changed and 'debian' in distro
    register: has_reboot
    until: has_reboot.failed != 'true'
    delay: 2
    retries: 150
person Mévatlavé Kraspek    schedule 24.10.2018