生成器

生成器用于在 rootfs 中创建、修改或删除文件。可用的生成器有

在镜像定义 YAML 中,它们列在 files 下。

files:
    - generator: <string> # which generator to use (required)
      name: <string>
      path: <string>
      content: <string>
      template:
          properties: <map>
          when: <array>
      templated: <boolean>
      mode: <string>
      gid: <string>
      uid: <string>
      pongo: <boolean>
      source: <string>
      architectures: <array> # filter
      releases: <array> # filter
      variants: <array> # filter

可以将过滤器应用于 files 中的每个条目。有效的过滤器是 architecturereleasevariant。有关更多信息,请参阅过滤器。

如果 pongotrue,则使用 Pongo2 渲染 pathcontentsource 的值。

cloud-init

对于 LXC 镜像,生成器通过禁用任何 cloud-init 服务来禁用 cloud-init,并创建文件 cloud-init.disable,该文件在启动时由 cloud-init 检查。

对于 Incus 镜像,生成器根据提供的名称创建模板。有效的名称为 user-datameta-datavendor-datanetwork-config。如果未另行定义,则默认 path/var/lib/cloud/seed/nocloud-net/<name>。设置 pathcontenttemplate.properties 将覆盖默认值。

dump

dump 生成器将提供的 content 写入 path 中设置的文件。如果提供,它将设置 mode(八进制格式)、gid(整数)和/或 uid(整数)。

copy

copy 生成器将文件从 source 复制到目标 pathpath 可以留空,在这种情况下,数据将放置在相同的 source 路径中,但在容器内部。如果提供,目标 path 将设置 mode(八进制格式)、gid(整数)和/或 uid(整数)。复制将根据以下规则进行

  • 如果 source 是一个目录,则复制目录的整个内容。仅支持符号链接和常规文件。

    • 注意 1:不会复制目录本身,只会复制其内容。

    • 注意 2:对于复制的文件,仅保留常规的 Unix 权限。

  • 如果 source 是符号链接或常规文件,则会单独复制它及其元数据。在这种情况下,如果 path 以尾部斜杠 / 结尾,则它将被视为目录,并且 source 的内容将写入 path/base(source)。

  • 如果 path 不以尾部斜杠结尾,则它将被视为常规文件,并且 source 的内容将写入 path

  • 如果 path 不存在,则会创建它以及其路径中所有缺少的目录。

  • 可以使用 Golang filepath.Match 正则表达式指定多个 source 资源。为简单起见,它们仅允许在基本名称中,而不允许在目录层次结构中。如果找到多个匹配项,则 path 将自动解释为目录。

hostname

对于 LXC 镜像,主机名生成器将 LXC 特定字符串 LXC_NAME 写入 path 中设置的 hostname 文件。如果路径不存在,则生成器不执行任何操作。

对于 Incus 镜像,生成器为 path 创建一个模板。如果路径不存在,则生成器不执行任何操作。

hosts

对于 LXC 镜像,生成器将条目 127.0.0.1 LXC_NAME 添加到 path 中设置的主机文件。

对于 Incus 镜像,生成器为 path 中设置的主机文件创建一个模板,并添加 127.0.0.1 {{ container.name }} 的条目。

remove

生成器从容器的根文件系统中删除 path 中设置的文件。

template

此生成器创建自定义 Incus 模板。name 字段用作模板的文件名。path 定义容器根文件系统中的目标文件。properties 键是模板属性的映射。

when 键可以是以下一个或多个:

  • create(在从镜像创建新容器时运行)

  • copy(在从现有容器创建容器时运行)

  • start(每次容器启动时运行)

有关更多信息,请参阅 Incus 文档中的 镜像格式

incus-agent

此生成器创建在 Incus VM 中启动 incus-agent 所需的 systemd 单元文件。

fstab

此生成器创建一个 /etc/fstab 文件,用于 VM。其内容为:

LABEL=rootfs  /         <fs>  <options>  0 0
LABEL=UEFI    /boot/efi vfat  defaults   0 0

文件系统取自 Incus 目标(请参阅 目标),默认为 ext4。选项根据文件系统生成。您无法覆盖它们。