Overcloud 主机磁盘镜像构建¶
本节涵盖使用 Diskimage builder (DIB) 构建 overcloud 主机磁盘镜像的配置,该构建器从 Yoga 12.0.0 版本开始可用。此配置应用于 ${KAYOBE_CONFIG_PATH}/overcloud-dib.yml。
启用主机磁盘镜像构建¶
从 Yoga 版本开始,可以使用 Diskimage builder 直接构建 overcloud 主机的磁盘镜像,而不是通过 Bifrost。通过以下选项启用此功能
overcloud_dib_build_host_images是否使用 DIB 直接构建主机磁盘镜像,而不是通过 Bifrost。将其设置为 true 会禁用 Bifrost 镜像构建,并允许使用
kayobe overcloud host image build命令构建镜像。自 Zed 版本以来,默认值为 true。
启用此选项后,Bifrost 将配置为停止构建根磁盘镜像。这将在未来的版本中成为默认行为。
Overcloud 根磁盘镜像配置¶
Kayobe 使用 Diskimage builder (DIB) 构建根磁盘镜像,这些镜像将在主机被配置时部署到 overcloud 主机。以下选项配置如何构建这些镜像。有关构建磁盘镜像的更多信息,请参阅 Diskimage-builder 文档。
默认配置使用所选的 OS 分发版(默认情况下为 Rocky Linux 10)构建整个磁盘(分区)镜像,并启用串行控制台,如果使用 CentOS Stream 或 Rocky Linux,则禁用 SELinux。 Cloud-init 用于处理 Bifrost 在配置期间构建的配置驱动。
overcloud_dib_host_packages_extra要安装的额外主机软件包列表。默认情况下为空列表。
overcloud_dib_host_images要构建的 overcloud 主机磁盘镜像列表。每个元素都是一个字典,定义了 stackhpc.openstack.os_images 角色接受格式的镜像。默认情况下,将构建一个名为
deployment_image的镜像,该镜像使用以下overcloud_dib_*变量进行配置:{"name": "deployment_image", "elements": "{{ overcloud_dib_elements }}", "env": "{{ overcloud_dib_env_vars }}", "packages": "{{ overcloud_dib_packages }}"}。overcloud_dib_os_elementDIB 基本 OS 元素。默认值为
{{ 'rocky-container' if os_distribution == 'rocky' else os_distribution }}。overcloud_dib_os_releaseDIB 镜像 OS 发布版本。默认值为
{{ os_release }}。overcloud_dib_elements_default默认 DIB 元素列表。默认值为
["{{ overcloud_dib_os_element }}", "cloud-init-datasources", "enable-serial-console", "vm"]。vm元素命名不佳,会导致 DIB 构建整个磁盘镜像,而不是单个分区。overcloud_dib_elements_extra额外的 DIB 元素列表。默认情况下为空。
overcloud_dib_elementsDIB 元素列表。默认值是
overcloud_dib_elements_default和overcloud_dib_elements_extra的组合。overcloud_dib_env_vars_defaultDIB 默认环境变量。默认值为
{"DIB_BOOTLOADER_DEFAULT_CMDLINE": "nofb nomodeset gfxpayload=text net.ifnames=1", "DIB_CLOUD_INIT_DATASOURCES": "ConfigDrive", "DIB_CONTAINERFILE_RUNTIME": "docker", "DIB_CONTAINERFILE_NETWORK_DRIVER": "host", DIB_RELEASE": "{{ overcloud_dib_os_release }}"}。overcloud_dib_env_vars_extraDIB 额外的环境变量。默认情况下为空。
overcloud_dib_env_varsDIB 环境变量。默认值是
overcloud_dib_env_vars_default和overcloud_dib_env_vars_extra的组合。overcloud_dib_packages要安装的 DIB 软件包列表。默认情况下不安装额外的软件包。
overcloud_dib_git_elements_default包含 Diskimage Builder (DIB) 元素的 git 仓库列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认情况下为空。
overcloud_dib_git_elements_extra包含 Diskimage Builder (DIB) 元素的额外 git 仓库列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认情况下为空。
overcloud_dib_git_elements包含 Diskimage Builder (DIB) 元素的 git 仓库列表。有关用法,请参阅 stackhpc.openstack.os_images 角色。默认值是
overcloud_dib_git_elements_default和overcloud_dib_git_elements_extra的组合。overcloud_dib_upper_constraints_file用于安装用于构建 overcloud 主机磁盘镜像的虚拟环境中的软件包的上层约束文件。默认值为
{{ pip_upper_constraints_file }}。overcloud_dib_dib_upper_constraints_file用于安装 DIB 以构建 overcloud 主机磁盘镜像的上层约束文件。默认情况下为空字符串。
磁盘镜像使用以下命令构建
(kayobe) $ kayobe overcloud host image build
值得注意的是,如果镜像已经存在,则不会重新构建它们。要强制重新构建镜像,必须使用 --force-rebuild 参数。
(kayobe) $ kayobe overcloud host image build --force-rebuild
示例:添加一个元素¶
在以下示例中,我们扩展了 DIB 元素列表,以添加 growpart 元素
dib.yml¶overcloud_dib_elements_extra:
- "growpart"
示例:构建 XFS 根文件系统镜像¶
默认情况下,DIB 将以 ext4 格式格式化镜像。在某些情况下,使用 XFS 可能很有用,例如在使用 overlay Docker 存储驱动程序时,该驱动程序可能会达到 ext4 允许的最大硬链接数。
在 DIB 中,我们通过将 FS_TYPE 环境变量设置为 xfs 来实现这一点。
dib.yml¶overcloud_dib_env_vars_extra:
FS_TYPE: "xfs"
示例:配置开发用户帐户¶
警告
不应在生产环境中使用开发用户帐户。
在调试失败的部署时,有时需要允许通过预配置的用户帐户访问镜像,该帐户具有已知密码。这可以通过 devuser 元素来实现。
本示例演示如何添加 devuser 元素,并配置具有无密码 sudo 权限的用户名和密码
dib.yml¶overcloud_dib_elements_extra:
- "devuser"
overcloud_dib_env_vars_extra:
DIB_DEV_USER_USERNAME: "devuser"
DIB_DEV_USER_PASSWORD: "correct horse battery staple"
DIB_DEV_USER_PWDLESS_SUDO: "yes"
或者,可以使用 dynamic-login 元素 通过将它们附加到内核参数来授权 SSH 密钥。
示例:配置自定义 DIB 元素¶
有时使用 DIB 本身未提供的自定义 DIB 元素很有用。这可以通过在 git 仓库中共享它们来完成。
overcloud-dib.yml¶overcloud_dib_elements_extra:
- "my-element"
overcloud_dib_git_elements:
- repo: "https://git.example.com/custom-dib-elements"
local: "{{ source_checkout_path }}/custom-dib-elements"
version: "master"
elements_path: "elements"
在此示例中,https://git.example.com/custom-dib-elements 的 master 分支将具有一个顶级 elements 目录,其中包含 my-element 目录,用于该元素。
示例:安装软件包¶
有时需要在根磁盘镜像中安装额外的软件包。为了避免编写自定义 DIB 元素,我们可以使用 overcloud_dib_packages 变量。例如,要安装 biosdevname 软件包
dib.yml¶overcloud_dib_packages:
- "biosdevname"
示例:构建多个镜像¶
可能需要构建多个镜像来支持部署中存在的各种硬件或 overcloud 主机执行的不同功能。可以使用 overcloud_dib_host_images 变量进行配置,使用 stackhpc.openstack.os_images 角色接受的格式。请注意,镜像名称不应包含文件扩展名。例如,要构建第二个镜像,该镜像具有开发用户帐户和 biosdevname 软件包
dib.yml¶overcloud_dib_host_images:
- name: "deployment_image"
elements: "{{ overcloud_dib_elements }}"
env: "{{ overcloud_dib_env_vars }}"
packages: "{{ overcloud_dib_packages }}"
- name: "debug_deployment_image"
elements: "{{ overcloud_dib_elements + ['devuser'] }}"
env: "{{ overcloud_dib_env_vars | combine(devuser_env_vars) }}"
packages: "{{ overcloud_dib_packages + ['biosdevname'] }}"
devuser_env_vars:
DIB_DEV_USER_USERNAME: "devuser"
DIB_DEV_USER_PASSWORD: "correct horse battery staple"
DIB_DEV_USER_PWDLESS_SUDO: "yes"
使用此配置运行 kayobe overcloud host image build 命令将创建两个镜像:deployment_image.qcow2 和 debug_deployment_image.qcow2。
磁盘镜像部署配置¶
有关如何配置用于配置每个主机的根磁盘镜像,请参阅 Bifrost 中的磁盘镜像部署配置。