如何初始化 Incus

在您创建 Incus 实例之前,您必须配置和初始化 Incus。

交互式配置

运行以下命令以启动交互式配置过程

incus admin init

注意

对于简单的配置,您可以以普通用户身份运行此命令。但是,初始化过程中的某些更高级的操作(例如,加入现有集群)需要 root 权限。在这种情况下,请使用 sudo 或以 root 身份运行该命令。

该工具会询问一系列问题以确定所需的配置。这些问题会根据您提供的答案动态调整。它们涵盖以下领域

集群(参见 关于集群如何组成集群

集群将多个 Incus 服务器组合在一起。集群成员共享相同的分布式数据库,可以使用 Incus 客户端(incus)或 REST API 统一管理。

默认答案为 no,表示未启用集群。如果您回答 yes,则可以连接到现有集群或创建一个集群。

网络(参见 关于网络网络设备

为实例提供网络访问。

您可以让 Incus 创建一个新的网桥(推荐)或使用现有的网络网桥或接口。

您可以在以后创建其他网桥并将它们分配给实例。

存储池(参见 关于存储池、卷和桶存储驱动程序

实例(和其他数据)存储在存储池中。

为了进行测试,您可以创建一个循环回送的存储池。但是,对于生产用途,您应该使用空的磁盘分区(或完整磁盘)而不是循环回送的存储(因为循环回送的池更慢,并且它们的尺寸无法缩小)。

推荐的后端是 zfsbtrfs

您可以在以后创建其他存储池。

远程访问(参见 访问远程 API远程 API 身份验证

允许通过网络远程访问服务器。

默认答案为 no,表示不允许远程访问。如果您回答 yes,则可以通过网络连接到服务器。

您可以选择向服务器添加客户端证书(手动或通过令牌)。

自动镜像更新(参见 关于镜像

您可以从镜像服务器下载镜像。在这种情况下,镜像可以自动更新。

默认答案为 yes,表示 Incus 将定期更新下载的镜像。

YAML incus admin init 预播种(参见 非交互式配置

如果您回答 yes,该命令将在终端中显示您选择的配置选项的摘要。

最小设置

要使用默认选项创建最小设置,您可以通过将 --minimal 标志添加到 incus admin init 命令中来跳过配置步骤

incus admin init --minimal

注意

最小设置提供基本的配置,但配置未针对速度或功能进行优化。尤其是默认情况下使用的 dir 存储驱动程序,它比其他驱动程序更慢,并且不提供快速快照、快速复制/启动、配额和优化的备份。

如果您想使用优化的设置,请改用交互式配置过程。

非交互式配置

incus admin init 命令支持一个 --preseed 命令行标志,它允许您通过预播种 YAML 文件以非交互方式完全配置 Incus 守护进程设置、存储池、网络设备和配置文件。

例如,从全新的 Incus 安装开始,您可以使用以下命令配置 Incus

    cat <<EOF | incus admin init --preseed
config:
  core.https_address: 192.0.2.1:9999
  images.auto_update_interval: 15
networks:
- name: incusbr0
  type: bridge
  config:
    ipv4.address: auto
    ipv6.address: none
EOF

此预播种配置将 Incus 守护进程初始化为监听 192.0.2.1 地址的端口 9999 上的 HTTPS 连接,每 15 小时自动更新一次镜像,并创建一个名为 incusbr0 的网络网桥设备,该设备会自动分配 IPv4 地址。

重新配置现有的 Incus 安装

如果您正在配置新的 Incus 安装,预播命令会根据指定内容应用配置(只要给定的 YAML 包含有效的键和值)。不存在可能与指定配置冲突的现有状态。

但是,如果您使用预播命令重新配置现有的 Incus 安装,提供的 YAML 配置可能与现有配置冲突。为了避免此类冲突,现已制定以下规则。

  • 提供的 YAML 配置将覆盖现有实体。这意味着如果您正在重新配置现有实体,则必须提供实体的完整配置,而不仅仅是不同的键。

  • 如果提供的 YAML 配置包含不存在的实体,则会创建这些实体。

这与 REST API 中的 PUT 请求的行为相同。

回滚

如果新配置的某些部分与现有状态冲突(例如,它们尝试将存储池的驱动程序从 dir 更改为 zfs),则预播命令将失败并自动尝试回滚到目前为止应用的任何更改。

例如,它会删除新配置创建的实体,并将覆盖的实体恢复到其原始状态。

覆盖实体时的失败模式与 REST API 中的 PUT 请求的失败模式相同。

注意

回滚过程可能会失败,尽管这种情况很少见(通常是由于后端错误或限制)。因此,在尝试通过预播重新配置 Incus 守护进程时应谨慎。

默认配置文件

与交互式初始化模式不同,incus admin init --preseed 命令不会修改默认配置文件,除非您在提供的 YAML 负载中明确表示。

例如,您通常需要将根磁盘设备和网络接口附加到默认配置文件。有关示例,请参见下一节。

配置格式

各种实体支持的键和值与 REST API 中记录的键和值相同,但为了方便起见已转换为 YAML。但是,您也可以使用 JSON,因为 YAML 是 JSON 的超集。

以下代码段提供了一个包含大多数可能配置的预播负载示例。您可以将其用作您自己的预播文件的模板,并根据需要添加、更改或删除内容。

# Daemon settings
config:
  core.https_address: 192.0.2.1:9999
  images.auto_update_interval: 6

# Storage pools
storage_pools:
- name: data
  driver: zfs
  config:
    source: my-zfs-pool/my-zfs-dataset

# Network devices
networks:
- name: incus-my-bridge
  type: bridge
  config:
    ipv4.address: auto
    ipv6.address: none

# Profiles
profiles:
- name: default
  devices:
    root:
      path: /
      pool: data
      type: disk
- name: test-profile
  description: "Test profile"
  config:
    limits.memory: 2GiB
  devices:
    test0:
      name: test0
      nictype: bridged
      parent: incus-my-bridge
      type: nic