В настоящее время я пытаюсь дополнительно автоматизировать автоматизацию VM, не включая 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"}
Я получаю 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 }}"