如何使用 cloud-init 设置具有包含 zsh 的多通道的 VM?

How can I use cloud-init to set up a VM with multipass that includes zsh?

我正在学习使用 multipass。我的 multipass 版本是 multipass 1.9.0+mac。我正在尝试创建一个非常简单的 cloud-init 配置:

package:
  - build-essential
  - zsh

我从

开始
multipass launch -n test --cloud-init config.yaml

我打开一个shell进入那个环境,但是/bin/里面没有zsh。

为什么没有安装 zsh?

package 不是有效的 top-level 密钥,但 packages 是。请参阅文档 here.

它确实应该警告这个错误,但目前没有。

试试这个:

#cloud-config
packages:
  - build-essential
  - zsh

上游 cloud-init 正在为此使用 jsonschema 验证来更好地 warnings/errors 配置(即将发布的版本中这方面的许多更改)。然而,目前,顶级密钥目前尚未验证。

此外,看起来 multipass 会自动为您插入 #cloud-config header,所以我 认为 您在 multipass 上不需要它,但是为了可移植到其他数据源,我会考虑添加它。根据我测试的多通道实例中的用户数据值,我看到了两种方式 header,因此为了便携性,我建议添加它,即使它在多通道上是 no-op。

此外,根据 Brett 的评论 sudo cloud-init devel schema --annotate --system 应该报告所提供的 #cloud-config 是否是有效架构。