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

Я развернул некоторые ОС с низкой поддержкой, такие как 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

1 Ответ

0 голосов
/ 24 октября 2018

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

  - 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
...