部署¶
本节描述了使用 Kayobe 将 OpenStack 云安装到一组裸机服务器上的方法。我们假设可以访问一个节点,该节点将作为虚拟机的主机来承载种子节点。我们还假设此种子主机可以访问将构成 OpenStack 控制平面的裸机节点。最后,我们假设控制平面节点可以访问将构成工作负载节点池的裸机节点。
参见
有关 Kayobe 环境配置的信息,请参见 此处。
Ansible 控制主机¶
在开始部署之前,我们必须引导 Ansible 控制主机。此处执行的任务包括
从 Ansible Galaxy 安装所需的 Ansible 角色。
如果需要,生成 SSH 密钥并将其添加到当前用户的授权密钥中。
在配置的版本下本地安装 Kolla Ansible。
要引导 Ansible 控制主机
(kayobe) $ kayobe control host bootstrap
物理网络¶
Kayobe 可以管理物理网络,它使用 Ansible 的网络模块。目前支持最流行的云基础设施交换机,但可以轻松扩展。要配置物理网络
(kayobe) $ kayobe physical network configure --group <group> [--enable-discovery]
使用 --group 参数指定包含要配置的交换机的 Ansible 组。
使用 --enable-discovery 参数启用对连接到裸机计算节点的端口的一次性配置,以支持通过 ironic inspector 进行硬件发现。
可以限制将要配置的交换机接口,无论是通过接口名称还是接口描述。
(kayobe) $ kayobe physical network configure --group <group> --interface-limit <interface names>
(kayobe) $ kayobe physical network configure --group <group> --interface-description-limit <interface descriptions>
名称或描述应由逗号分隔。当将计算节点添加到现有部署中时,这可能很有用,以避免更改活动节点正在使用的配置接口。
使用 --display 参数将显示候选交换机配置,而无需实际应用它。
参见
有关物理网络设备配置的信息,请参见 此处。
种子主机¶
注意
不必在虚拟机中运行种子服务。要使用现有的裸机主机或在 Kayobe 外部配置的虚拟机,可以跳过此部分。
主机配置¶
要配置种子主机的宿主操作系统以及 Libvirt/KVM 虚拟化支持
(kayobe) $ kayobe seed hypervisor host configure
参见
有关主机配置的信息,请参见 此处。
种子¶
虚拟机配置¶
注意
不必在虚拟机中运行种子服务。要使用现有的裸机主机或在 Kayobe 外部配置的虚拟机,可以跳过此步骤。确保 Ansible 库存包含种子主机。
种子主机应安装 CentOS 或 Rocky 或 Ubuntu 以及 libvirt。它应该为种子虚拟机需要访问的所有网络配置 libvirt 网络,并为种子虚拟机的卷提供可用的 libvirt 存储池。要配置种子虚拟机
(kayobe) $ kayobe seed vm provision
完成此命令后,种子虚拟机应处于活动状态并可通过 SSH 访问。Kayobe 将使用虚拟机的 IP 地址更新 Ansible 库存。
主机配置¶
要配置种子主机操作系统
(kayobe) $ kayobe seed host configure
注意
如果种子主机使用在先前安装中使用的磁盘,则可能需要擦除这些磁盘上的分区和 LVM 数据。要擦除主机配置期间未挂载的所有磁盘
(kayobe) $ kayobe seed host configure --wipe-disks
参见
有关主机配置的信息,请参见 此处。
构建容器镜像¶
注意
可以使用来自像 Quay.io 这样的镜像仓库的预构建容器镜像。在这种情况下,可以跳过此步骤。
可以使用来自像 Quay.io 这样的镜像仓库的预构建容器镜像。在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用 kolla 的下游版本。镜像由 container-image-builders 组中的主机构建,默认情况下包括 seed。
要构建容器镜像
(kayobe) $ kayobe seed container image build
可以通过提供一个或多个镜像名称正则表达式来构建特定的镜像集
(kayobe) $ kayobe seed container image build bifrost-deploy
为了在构建后将镜像推送到仓库,添加 --push 参数。
参见
有关配置 Kolla 以构建容器镜像的信息,请参见 此处。
部署容器化服务¶
此时需要在种子虚拟机上部署种子服务。这些服务在 bifrost_deploy 容器中部署。
此命令还会构建将用于使用磁盘镜像生成器 (DIB) 部署 overcloud 节点的操作系统镜像,如果 overcloud_dib_build_host_images 设置为 False。
注意
如果您使用的是 Rocky Linux - 操作系统镜像的构建需要使用 kayobe overcloud host image build 来完成。
要在容器中部署种子服务
(kayobe) $ kayobe seed service deploy
完成此命令后,种子服务将处于活动状态。
注意
Bifrost 部署行为在 Kayobe 和 Kolla-Ansible 之间拆分。因此,如果您只想限制为 Bifrost 部署,则应同时使用 --tags kolla-bifrost 和 --kolla-tags bifrost。
参见
有关配置 Kolla Ansible 的信息,请参见 此处。有关配置 Bifrost 的信息,请参见 此处。 Overcloud 根磁盘镜像配置 提供有关配置根磁盘镜像构建过程的信息。有关在种子节点上部署其他自定义服务(容器)的信息,请参见 此处。
构建部署镜像¶
注意
可以使用预构建的部署镜像。在这种情况下,可以跳过此步骤。
可以使用来自 OpenStack 托管的 tarballs 或另一个来源的预构建部署镜像。在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用 Ironic Python Agent (IPA) 的下游版本。为了构建 IPA 镜像,应将 ipa_build_images 变量设置为 True。
要本地构建镜像
(kayobe) $ kayobe seed deployment image build
如果之前已构建了镜像,则不会重新构建它们。要强制重新构建镜像,请使用 --force-rebuild 参数。
参见
有关如何配置 IPA 镜像构建过程的信息,请参见 此处。
构建 Overcloud 主机磁盘镜像¶
注意
只有当 overcloud_dib_build_host_images 设置为 True 时,此步骤才相关,自 Zed 版本以来,这是默认设置。
主机磁盘镜像在配置期间部署到 overcloud 主机。要构建主机磁盘镜像
(kayobe) $ kayobe overcloud host image build
如果之前已构建了镜像,则不会重新构建它们。要强制重新构建镜像,请使用 --force-rebuild 参数。
参见
有关如何配置 overcloud 主机磁盘镜像构建过程的信息,请参见 此处。
通过 SSH 访问种子(可选)¶
要通过 SSH 访问种子,首先确定种子的 IP 地址。我们可以使用 kayobe configuration dump 命令来检查种子的 IP 地址
(kayobe) $ kayobe configuration dump --host seed --var-name ansible_host
变量 kayobe_ansible_user 确定 Kayobe 在通过 SSH 访问机器时将使用的用户帐户。默认情况下,这是 stack。使用此用户访问种子
$ ssh <kayobe ansible user>@<seed VM IP>
要查看活动的容器
注意
示例显示在使用 Docker 作为容器引擎时的命令。如果使用 Podman,只需将命令中的 docker 替换为 sudo podman 即可。
$ docker ps
离开种子虚拟机并返回到 Ansible 控制主机上的 shell
$ exit
基础设施虚拟机¶
警告
对基础设施虚拟机的支持被认为是实验性的:其设计在未来版本中可能会发生变化,而无需弃用期。
注意
在遵循这些步骤之前,有必要进行一些配置。请参见 基础设施虚拟机。
虚拟机配置¶
用于托管虚拟机的超visor 由 infra_vm_hypervisor 变量控制。它默认使用种子超visor。所有超visor 都应安装 CentOS 或 Ubuntu 以及 libvirt。它应该为虚拟机需要访问的所有网络配置 libvirt 网络,并为虚拟机的卷提供可用的 libvirt 存储池。有关 种子 和 种子超visor 所需步骤可以在上面找到。
要配置基础设施虚拟机
(kayobe) $ kayobe infra vm provision
完成此命令后,基础设施虚拟机应处于活动状态并可通过 SSH 访问。Kayobe 将使用虚拟机的 IP 地址更新 Ansible 库存。
主机配置¶
要配置基础设施虚拟机主机操作系统
(kayobe) $ kayobe infra vm host configure
注意
如果基础设施虚拟机主机使用在先前安装中使用的磁盘,则可能需要擦除这些磁盘上的分区和 LVM 数据。要擦除主机配置期间未挂载的所有磁盘
(kayobe) $ kayobe infra vm host configure --wipe-disks
参见
有关主机配置的信息,请参见 此处。
使用挂钩在虚拟机上部署服务¶
提供了一个无操作的服务部署命令来执行其他配置。其目的是让用户定义 挂钩到自定义 playbook,这些 playbook 定义了必要的任何进一步的配置或服务部署。
要触发挂钩
(kayobe) $ kayobe infra vm service deploy
示例¶
在此示例中,我们有一个名为 dns01 的基础设施虚拟机主机,它提供 DNS 服务。可以将该主机添加到库存中的 dns-servers 组
$KAYOBE_CONFIG_PATH/inventory/infra-vms¶[dns-servers]
an-example-vm
[infra-vms:children]
dns-servers
我们有一个针对 dns-servers 组的自定义 playbook,用于设置 DNS 服务器
$KAYOBE_CONFIG_PATH/ansible/dns-server.yml¶---
- name: Deploy DNS servers
hosts: dns-servers
tasks:
- name: Install bind packages
package:
name:
- bind
- bind-utils
become: true
最后,我们添加一个符号链接来将 playbook 设置为 kayobe infra vm service deploy 命令的挂钩
(kayobe) $ mkdir -p ${KAYOBE_CONFIG_PATH}/hooks/infra-vm-host-configure/post.d
(kayobe) $ cd ${KAYOBE_CONFIG_PATH}/hooks/infra-vm-host-configure/post.d
(kayobe) $ ln -s ../../../ansible/dns-server.yml 50-dns-server.yml
Overcloud¶
发现¶
注意
如果无法发现 overcloud,可以使用 bifrost 文件格式的服务器静态清单文件 servers.yml 进行配置,方法是在 ${KAYOBE_CONFIG_PATH}/bifrost.yml 中使用 kolla_bifrost_servers 变量。
overcloud 的发现由在 seed 上的 bifrost_deploy 容器中运行的 ironic inspector 服务支持。该服务配置为使用 IPA ramdisk 进行自省,对未识别的 MAC 地址进行 PXE 启动。如果自省节点在 ironic 清单中不存在,ironic inspector 将为其创建一个新条目。
通过使节点使用连接到 overcloud 置备网络的 NIC 进行 PXE 启动来触发 overcloud 的发现。对于许多服务器来说,这将是出厂默认设置,只需打开电源即可实现。
在发现过程完成后,overcloud 节点应在 seed 主机 bifrost_deploy 容器中运行的 ironic 服务中注册。可以通过在 seed 上执行以下命令来查看节点清单
注意
示例显示在使用 Docker 作为容器引擎时的命令。如果使用 Podman,只需将命令中的 docker 更改为 sudo podman 即可。
$ docker exec -it bifrost_deploy bash
(bifrost_deploy) $ export OS_CLOUD=bifrost
(bifrost_deploy) $ baremetal node list
为了使用 Kayobe 与这些节点交互,请运行以下命令将它们添加到 Kayobe 和 Kolla-Ansible 清单
(kayobe) $ kayobe overcloud inventory discover
参见
这篇 博客文章 提供了一个发现过程的案例研究,包括通过交换机端口描述自动命名 Ironic 节点、Ironic Inspector 和 LLDP。
保存硬件自省数据¶
如果 ironic inspector 在 seed 主机上使用,自省数据将存储在本地 nginx 服务中。可以将此数据保存到控制主机
(kayobe) $ kayobe overcloud introspection data save
--output-dir 可用于指定保存自省数据文件的目录。 --output-format 可用于设置文件格式。
BIOS 和 RAID 配置¶
注意
BIOS 和 RAID 配置可能需要硬件进行一次或多次电源循环才能完成操作。这些操作将自动执行。
注意
目前,仅支持 Dell 服务器的 overcloud 主机的 BIOS 和 RAID 配置。
BIOS 设置和 RAID 卷的配置当前作为硬件置备之外的单独任务执行。要配置 BIOS 和 RAID
(kayobe) $ kayobe overcloud bios raid configure
在配置节点的 RAID 卷后,可能需要对节点进行硬件检查,以重新配置 ironic 节点的调度属性和根设备提示。要执行手动硬件检查
(kayobe) $ kayobe overcloud hardware inspect
目前,配置 BIOS 和 RAID 存在一些限制
Ansible 控制主机必须能够访问正在配置的服务器的 BMC。
Ansible 控制主机必须在 Ansible 使用的 Python 解释器中提供
python-dracclientPython 模块。Python 解释器的路径通过ansible_python_interpreter进行配置。
置备¶
注意
有一个 cloud-init 问题,该问题阻止在置备后通过 SSH 访问没有名称的 Ironic 节点。为了避免此问题,请确保 Bifrost 清单中的所有 Ironic 节点都已命名。这可以通过 自动发现 或手动实现,例如从 seed
注意
示例显示在使用 Docker 作为容器引擎时的命令。如果使用 Podman,只需将命令中的
docker更改为sudo podman即可。$ docker exec -it bifrost_deploy bash (bifrost_deploy) $ export OS_CLOUD=bifrost (bifrost_deploy) $ baremetal node set ee77b4ca-8860-4003-a18f-b00d01295bda --name controller0
overcloud 的置备由在 seed 上的 bifrost 容器中运行的 ironic 服务执行。要置备 overcloud 节点
(kayobe) $ kayobe overcloud provision
完成此命令后,overcloud 节点应已置备了 OS 镜像。该命令将等待节点在 ironic 中变为 active 状态并通过 SSH 可访问。
主机配置¶
要配置 overcloud 主机的 OS
(kayobe) $ kayobe overcloud host configure
注意
如果控制器主机使用在先前安装中使用的磁盘,则可能需要擦除这些磁盘上的分区和 LVM 数据。要擦除主机配置期间未挂载的所有磁盘
(kayobe) $ kayobe overcloud host configure --wipe-disks
参见
有关主机配置的信息,请参见 此处。
构建容器镜像¶
注意
可以使用来自像 Quay.io 这样的镜像仓库的预构建容器镜像。在这种情况下,可以跳过此步骤。
在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用 kolla 的下游版本。镜像由 container-image-builders 组中的主机构建,默认情况下包括 seed。如果未使用 seed 主机,例如在全包控制器开发环境中,可以修改此组以导致容器在控制器上构建。
要构建容器镜像
(kayobe) $ kayobe overcloud container image build
可以通过提供一个或多个镜像名称正则表达式来构建特定的镜像集
(kayobe) $ kayobe overcloud container image build ironic- nova-api
当您的环境使用 OVN 时,将不会构建 OVS 镜像。如果您想同时构建所有 Neutron 镜像,则需要将额外的变量 kolla_build_neutron_ovs 设置为 true
(kayobe) $ kayobe overcloud container image build -e kolla_build_neutron_ovs=true
为了在构建后将镜像推送到仓库,添加 --push 参数。
参见
有关配置 Kolla 以构建容器镜像的信息,请参见 此处。
拉取容器镜像¶
注意
可以本地构建容器镜像,从而避免使用像 Quay.io 这样的镜像注册表。在这种情况下,可以跳过此步骤。
在大多数情况下,在 Quay.io 上提供合适的预构建 kolla 镜像。 openstack.kolla 组织 提供适合与 kayobe 配合使用的镜像仓库,默认情况下将使用它们。要从配置的镜像注册表拉取镜像
(kayobe) $ kayobe overcloud container image pull
构建部署镜像¶
注意
可以使用预构建的部署镜像。在这种情况下,可以跳过此步骤。
注意
仅当使用 Ironic 时,才需要部署镜像。否则,可以跳过此步骤。
可以使用来自 OpenStack 托管的 tarballs 或另一个来源的预构建部署镜像。在某些情况下,可能需要本地构建镜像,以应用本地镜像自定义或使用 Ironic Python Agent (IPA) 的下游版本。为了构建 IPA 镜像,应将 ipa_build_images 变量设置为 True。
要本地构建镜像
(kayobe) $ kayobe overcloud deployment image build
如果之前已构建了镜像,则不会重新构建它们。要强制重新构建镜像,请使用 --force-rebuild 参数。
参见
有关如何配置 IPA 镜像构建过程的信息,请参见 此处。
构建 Swift 环¶
注意
如果未使用 Swift,则可以跳过此部分。
Swift 使用环文件来控制集群中数据的位置。可以使用以下命令自动生成这些文件
(kayobe) $ kayobe overcloud swift rings generate
部署容器化服务¶
要部署 overcloud 中的容器化服务
(kayobe) $ kayobe overcloud service deploy
完成此命令后,overcloud 节点应在 Docker 容器中运行 OpenStack 服务。
参见
有关 Kolla Ansible 配置的信息,请参见 此处。
与控制平面交互¶
Kolla-ansible 会输出一个环境变量文件,可用于以管理员用户身份访问 OpenStack 管理端点
$ source ${KOLLA_CONFIG_PATH:-/etc/kolla}/admin-openrc.sh
Kayobe 还会生成一个环境变量文件,可用于以管理员用户身份访问 OpenStack 公共端点,如果管理员端点无法从 Ansible 控制主机访问,则可能需要此文件
$ source ${KOLLA_CONFIG_PATH:-/etc/kolla}/public-openrc.sh
执行部署后配置¶
要执行 overcloud 服务的部署后配置
(kayobe) $ source ${KOLLA_CONFIG_PATH:-/etc/kolla}/admin-openrc.sh
(kayobe) $ kayobe overcloud post configure
这将执行以下任务
将 Ironic Python Agent (IPA) 镜像注册到 glance
将自省规则注册到 ironic inspector
使用 neutron 注册置备网络和子网
配置 Grafana 组织、仪表板和数据源