过去,我们使用打包程序构建基于 BIOS 的 Ubuntu 20.04 OVF 模板,并使用 cloud-init 来自动化配置。这几年来一直运行良好,没有任何问题。
目前我们正忙于使用打包程序构建基于 EFI 的 Ubuntu 20.04 OVF 模板,但是使用 EFI 时 cloud-init 不再配置虚拟机。
我找不到问题所在,非常感激帮助。
我们使用两个 cloud-init 阶段:
- 在打包程序构建过程中,云初始化脚本在 BIOS 和 EFI 上执行
- 在虚拟机启动期间,cloud inint 脚本仅在基于 BIOS 的系统上执行
在打包构建阶段和 VM 启动期间,cloud-init 脚本位于第一个 CDROM 驱动器上/dev/sr0
。
基于 BIOS 的虚拟机启动后:
输出/run/cloud-init/ds-identify.log
*SNIP*
ISO9660_DEVS=/dev/sr0=cidata
*SNIP*
包含/var/log/cloud-init.log
字符串:
DataSourceNoCloud.py[DEBUG]: Using data from /dev/sr0
基于EFI的虚拟机启动后:
输出/run/cloud-init/ds-identify.log
*SNIP*
ISO9660_DEVS=/dev/sr0=cidata
*SNIP*
因此,找到了 CDROM 驱动器并具有正确的标签当我附加 ISO 时,Twice/run/cloud-init/ds-identify.log
包含/dev/sr1 aswell
不/var/log/cloud-init.log
包含任何/dev/sr[x]
字符串
完整输出/run/cloud-init/ds-identify.log
:
[up 3.93s] ds-identify
policy loaded: mode=enabled report=false found=all maybe=all notfound=disabled
/etc/cloud/cloud.cfg.d/99-installer.cfg set datasource_list:
no datasource_list found, using default: MAAS ConfigDrive NoCloud AltCloud Azure Bigstep CloudSigma CloudStack DigitalOcean Vultr AliYun Ec2 GCE OpenNebula OpenStack OVF SmartOS Scaleway Hetzner IBMCloud Oracle Exoscale RbxCloud UpCloud VMware LXD NWCS
DMI_PRODUCT_NAME=VMware7,1
DMI_SYS_VENDOR=VMware, Inc.
DMI_PRODUCT_SERIAL=VMware-*SNIP*
DMI_PRODUCT_UUID=*SNIP*
PID_1_PRODUCT_NAME=unavailable
DMI_CHASSIS_ASSET_TAG=No Asset Tag
DMI_BOARD_NAME=440BX Desktop Reference Platform
FS_LABELS=cidata
ISO9660_DEVS=/dev/sr0=cidata
KERNEL_CMDLINE=BOOT_IMAGE=/vmlinuz-5.4.0-144-generic root=/dev/mapper/VGsystem-LVroot ro apparmor=0
VIRT=vmware
UNAME_KERNEL_NAME=Linux
UNAME_KERNEL_RELEASE=5.4.0-144-generic
UNAME_KERNEL_VERSION=#161-Ubuntu SMP Fri Feb 3 14:49:04 UTC 2023
UNAME_MACHINE=x86_64
UNAME_NODENAME=cloudsystem1.local.nl
UNAME_OPERATING_SYSTEM=GNU/Linux
DSNAME=
DSLIST=MAAS ConfigDrive NoCloud AltCloud Azure Bigstep CloudSigma CloudStack DigitalOcean Vultr AliYun Ec2 GCE OpenNebula OpenStack OVF SmartOS Scaleway Hetzner IBMCloud Oracle Exoscale RbxCloud UpCloud VMware LXD NWCS
MODE=enabled
ON_FOUND=all
ON_MAYBE=all
ON_NOTFOUND=disabled
pid=593 ppid=569
is_container=false
mode=enabled. returning 0
[up 3.99s] returning 0
我尝试过的:
- 再次重启系统
- 清理所有 cloud-init 缓存
- cloud-init 清理;cloud-init 初始化
- 创建了一个“简单”的 cloud-init 脚本
什么也没解决任何问题。
我当前的配置文件:
root@cloudsystem1:/# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
root@cloudsystem1:/# cd /mnt
root@cloudsystem1:/mnt# ls
meta-data user-data
root@cloudsystem1:/mnt# cat meta-data
local-hostname: cloudsystem1
root@cloudsystem1:/mnt# cat user-data
#cloud-config
bootcmd:
- echo "This is een bootcmd test" >> /tmp/IwasHere
fqdn: cloudsystem1.local.nl
groups:
- staff
prefer_fqdn_over_hostname: true
runcmd:
- echo "This is een runcmd test" >> /tmp/IwasHere
users:
- create_groups: false
groups: staff
lock_passwd: true
name: docker
no_user_group: true
ssh_authorized_keys:
- |
ssh-rsa XXXXX0XxXX0XX0XXXXXXXXXXXXXXXXXXXxX/XXXXXXXXxx0XXXXXXXXxxXXXXxXXXX0XXX0XXX/XX+XX00XXXXXXXX0XXxX0XXXXXxX/xXXX0XXxXX0X0XXxXXxXXXX+XXXx00x0xxX0xX0X0XxX0XXXX00X0XxXXX0000XXXX0XXX0XXX/XXXXXXXxXXXxXXXx0X0xXXX0XxXXXX0XXXXXXXXXXXXXxXXXxX+X0Xx0X0XxXXXXX0XXXxXX0XXX0XXXXXxXXXxXx+XXXX0XXXXXX0/XXxXXXXXX0XXXXXXX0XXXXX00XX0XXXXXXXXXXXXXXXXx/XXXXXXX0XX0XXXxX0XXXXXX+XXXXXX0X0XX0XxXX+XXX
sudo: ALL=(ALL) NOPASSWD:ALL
在基于 BIOS 的系统上,设置了主机名,创建了 docker 帐户并/tmp/IwasHere
包含两行。
知道如何解决这个问题吗?