生成器¶
生成器用于在 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
。选项根据文件系统生成。您无法覆盖它们。