生成器¶
生成器用于在 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 中的每个条目。有效的过滤器是 architecture、release 和 variant。有关更多信息,请参阅过滤器。
如果 pongo 为 true,则使用 Pongo2 渲染 path、content 和 source 的值。
cloud-init¶
对于 LXC 镜像,生成器通过禁用任何 cloud-init 服务来禁用 cloud-init,并创建文件 cloud-init.disable,该文件在启动时由 cloud-init 检查。
对于 Incus 镜像,生成器根据提供的名称创建模板。有效的名称为 user-data、meta-data、vendor-data 和 network-config。如果未另行定义,则默认 path 为 /var/lib/cloud/seed/nocloud-net/<name>。设置 path、content 或 template.properties 将覆盖默认值。
dump¶
dump 生成器将提供的 content 写入 path 中设置的文件。如果提供,它将设置 mode(八进制格式)、gid(整数)和/或 uid(整数)。
copy¶
copy 生成器将文件从 source 复制到目标 path。 path 可以留空,在这种情况下,数据将放置在相同的 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。选项根据文件系统生成。您无法覆盖它们。