操作系统:Oracle Linux 8.7 vCenter:7.0.3 build 20051473 虚拟机管理程序:VMware ESXi,7.0.3,19193900 ansible-playbook [核心 2.13.5] python 版本 = 3.8.10(默认,2022 年 11 月 14 日,12:59:47)[GCC 9.4.0] jinja 版本 = 3.1.2 libyaml = True
我正在使用以下 Ansible 任务从模板部署虚拟机:
- name: Create a new virtual machine {{ hostname }} on vCenter {{ vcenter_hostname }} from template {{ source_template }}
community.vmware.vmware_guest:
hostname: "{{ vcenter_hostname }}"
username: "{{ vcenter_username }}"
password: "{{ vcenter_password }}"
validate_certs: false
datacenter: "{{ datacenter_name }}"
folder: /{{ datacenter_name }}/vm/
name: "{{ hostname }}"
state: present
template: "{{ source_template }}"
esxi_hostname: "{{ esxi_hostname }}"
disk:
- size_gb: "{{ size_disk }}"
type: "{{ disk_type }}"
datastore: "{{ datastore_name }}"
hardware:
memory_mb: "{{ memory }}"
memory_reservation_lock: true
num_cpus: "{{ vcpu }}"
cpu_reservation: "{{ reserved_cpu }}"
scsi: paravirtual
nested_virt: true
networks:
- name: VM Network
ip: "{{ ip_address }}"
netmask: "{{ ip_netmask }}"
gateway: "{{ default_gateway }}"
device_type: vmxnet3
type: static
state: present
customization:
dns_servers:
- "{{ dns_1 }}"
- "{{ dns_2 }}"
wait_for_ip_address: true
delegate_to: localhost
register: deploy_vm
部署虚拟机后,ansible playbook 无法继续执行以下任务:
fatal: [template-common]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host 172.24.76.35 port 22: Connection refused", "unreachable": true}
我访问了虚拟机,发现它无法连接到网络。我通过 nmtui 从地址字段中删除 MAC 地址解决了这个问题:
但是,如果我在从 VM 模板部署 VM 时执行此操作,我会遇到同样的问题。即使 MAC 地址是正确的。
我也尝试过:
- 从 /etc/sysconfig/network-scripts/ifcfg-ens192 中删除 HWADDR 参数
- 删除 /etc/udev/rules.d/70.persistent-ipoib.rules
- 将源虚拟机转换为虚拟机模板之前删除网络适配器
尽管进行了所有这些修改,从 VM 模板创建的 VM 仍然无法使用该接口。
我想强调的是,即使在 HWADDR 参数和 nmtui 命令显示的界面中正确设置了 mac 地址(如上所示),网络接口也不会工作,除非我从 nmtui 配置中删除 mac 地址。
有没有办法可以防止 mac 地址自动写入 nmtui?
任何其他解决方案或配置都是有效的,唯一的要求是部署的虚拟机具有工作界面而无需任何额外的交互。