我正在 Ubuntu 22.04 主机上执行这些步骤:
下载云镜像
qemu-img create -b ../jammy-server-cloudimg-amd64.img -f qcow2 -F qcow2 myubuntu2204test01-base.img 10G
在目录 myubuntu2204test01 中创建文件元数据:
instance-id: myubuntu2204test01
local-hostname: myubuntu2204test01.example.com
network:
version: 2
ethernets:
enp1s0:
dhcp4: no
addresses: [192.168.122.146/24]
nameservers:
addresses: [192.168.122.1]
routes:
- to: 0.0.0.0/0
via: 192.168.122.1
在目录 myubuntu2204test01 中创建文件用户数据:
#cloud-config
users:
- name: someuser
ssh_authorized_keys:
- ssh-ed25519 somekey comment
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
groups: sudo
shell: /bin/bash
ci
为数据生成 ISO 映像
genisoimage -output cidata.iso -V cidata -r -J user-data meta-data
创建虚拟机 myubuntu2204test01
virt-install \
--name=testvmubuntu2204 \
--ram=512 --vcpus=1 \
--import \
--disk path=myubuntu2204test01-base.img,format=qcow2 \
--disk path=cidata.iso,device=cdrom \
--os-variant=ubuntu22.04 \
--network bridge=virbr0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole
虚拟机已创建。但是 VM 没有元数据中定义的静态 IP 网络。VM 具有默认的 DHCP 网络配置。
在此为来宾 VM 创建静态 IP 的过程中缺少或不正确的是什么?
我已经尝试在用户数据和元数据文件中定义网络,它们都无法为来宾虚拟机创建静态网络。
根据 cloud-init 文档:
看起来您正在尝试使用版本 2 网络配置;这意味着您在错误的文件中提供了它。您需要添加
network-config
而不是meta-data
.正如我在评论中提到的,您还需要更正网络配置文件的格式:
--cloud-init
您可以通过使用选项virt-install
而不是自己构建配置磁盘来简化您的生活:(这假定您有本地命名的文件
user-dat.ayaml
,并network-config.yaml
根据需要进行调整。)