Сейчас я пытаюсь еще больше автоматизировать автоматизацию ВМ, не добавляя IP-адрес в файл переменных. Я нашел модуль nslookup с dig, но чувствую, что поступаю неправильно, например, вот файл переменных, который читается при создании для получения подробной информации:
# VMware Launch Variables
# If this is a test deployment you must ensure the vm is terminated after use.
vmname: agent5
esxi_datacenter: Datacenter
esxi_cluster: Cluster
esxi_datastore: ds1 # Do not change value.
esxi_template: template-v2
esxi_folder: agents # Folder must be pre-created
# Static IP Addresses
esxi_static_ip: "{{ lookup('dig', '{{ vmname }}.example.com.') }}"
esxi_netmask: 255.255.252.0
esxi_gateway: 10.0.0.1
Что я надеялся сделать с ними просто должен был иметь "esxi_static_ip", но вытащить на лету из поиска с помощью dig. Однако в текущем состоянии это не работает.
Происходит то, что виртуальная машина либо запускается без адреса ipv4, либо чаще происходит сбой со следующей ошибкой:
fatal: [localhost -> localhost]: FAILED! => {"changed": false, "msg": "Failed to create a virtual machine : A specified parameter was not correct: spec.nicSettingMap.adapter.ip.ipAddress"}
I получить IP-адрес и передать его, что работает, когда я жестко кодирую esxi_static_ip: в моем файле vmware-lanch-vars.yml. Однако, если я использую (включая примеры), он не работает.
Newvm регистрируется, когда я запускаю свою книгу воспроизведения vmware_guest.
- name: Make virtual machine IP persistant
set_fact:
newvm_ip_address: '{{ newvm.instance.ipv4 }}'
- name: Add host to in memory inventory
add_host:
hostname: "{{ newvm_ip_address }}"
groups: just_created
newvm_ip_address: "{{ newvm.instance.ipv4 }}"
Когда я запускаю с -vvvv, я вижу, что IP-адрес не прикреплен:
"networks": [
{
"device_type": "vmxnet3",
"gateway": "0.0.0.01",
"ip": "",
"name": "Network",
"netmask": "255.255.252.0",
"type": "static"
}
],
ОБНОВЛЕНИЕ 3
Когда я создал простую пьесу, она работает, но не тогда, когда я помещаю ее в свой обычный поток, это работает ниже:
---
- hosts: localhost
vars:
vmname: "apim-sb-ng1-agent2"
vm_dig_fqdn: "{{ vmname }}.example.com."
esxi_static_ip: "{{ lookup('dig', vm_dig_fqdn) }}"
tasks:
- debug: msg="{{ esxi_static_ip }}"