如何将 cloud-init NoCloud 与 OPNsense 21 结合使用?

如何将 cloud-init NoCloud 与 OPNsense 21 结合使用?

我是 OPNSense 的新手(一般来说也是 FreeBSD),我有兴趣使用 cloud-init 至少配置 LAN (vtnet0) 的静态 IP 地址、root 密码,并最终在 a 中运行自定义脚本(或 shell 命令)。使用 Qemu 创建 OPNsense VM 以应用自定义配置。

我看到 opnsense github repo 有云初始化端口,所以我安装了它:

pkg install net/cloud-init

然后,我根据 cloud-init NoCloud 的要求,将 cidata.iso 映像添加到 Qemu,其中包含用户数据和元数据。我已经在 ubuntu server 21 和 kali linux 上测试了这些文件。它们至少在这些操作系统上是正确的;)

我发现 cdrom 为 /dev/cd0 并安装了

mkdir -p /media/cdrom
mount -t cd9660 /dev/cd0 /media/cdrom

我还编辑了 /etc/fstab 并附加了这一行:

/dev/cd0 /media/cdrom cd9660 ro 0 0

启动时自动挂载 cdrom。

最后,我创建了(因为不存在)/etc/rc.conf,内容如下:

cloudinit_enable="YES"

并重新启动我的 OPNsense 虚拟机。

我现在期望的是 cloud-init 将在启动时自动启动。

然而这并没有发生,可能是因为我必须配置一些东西。如果我cloud-init init通过终端运行它会抛出错误:

stages.py[WARNING]: Failed to rename devices: Unexpected error while running command.
Command [`ip`, `-6`, `addr`,`show`, `permanent`, `scope`,`global`]
Exit code: -
Reason: [Errno 2] No such file or directory: b`ip`
Stdout: -
Stderr: -
No `init` modules to run under section `cloud_init_modules`

在 Kali Linux 和 Ubuntu Server 上它都可以轻松运行。

我对此有一些疑问:

  1. 是否可以将 cloud-init 端口与 NoCloud 和带有配置文件的 cdrom (cidata) 一起使用,或者仅支持 OpenStack 等云服务?
  2. 我上面的配置正确还是我遗漏了什么?
  3. 为什么会出现上面的错误呢?我该如何修复它?

我已经发布了这个问题这里,但我没有收到答复。

答案1

我正在致力于将 cloud-init 支持扩展到 BSD*。这些错误现在应该已修复,因为至少https://github.com/canonical/cloud-init/pull/1779

到目前为止,Vultr 得到了相当好的支持。如果某件事在 中不起作用,net/cloud-init那么它很有可能在 中起作用net/cloud-init-devel。如果它在那里不起作用,我很乐意修复报告的问题。 cloud-init 已将其错误跟踪器从 Launchpad 移至 GitHub,这可能会让贡献变得更加容易。


*主要是 FreeBSD,因为这是 FreeBSD 基金会赞助的项目,而且我最熟悉 FreeBSD)

相关内容