Cloud-Init 云配置脚本未在 UEFI 中启动

Cloud-Init 云配置脚本未在 UEFI 中启动

过去,我们使用打包程序构建基于 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包含两行。

知道如何解决这个问题吗?

相关内容