第 4 章 安装 undercloud


创建 Red Hat OpenStack Platform 环境的第一步是在 undercloud 系统上安装 director。这需要进行一些先期的步骤来启用所需的订阅和软件仓库。

4.1. 创建 stack 用户

在安装 director 的过程中,需要一个非 root 用户来执行命令。请按照以下过程,创建一个名为 stack 的用户并设置密码。

步骤

  1. root 用户身份登录 undercloud。
  2. 创建 stack 用户:

    [root@director ~]# useradd stack
    Copy to Clipboard Toggle word wrap
  3. 为该用户设置密码:

    [root@director ~]# passwd stack
    Copy to Clipboard Toggle word wrap
  4. 进行以下操作,以使用户在使用 sudo 时无需输入密码:

    [root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack
    [root@director ~]# chmod 0440 /etc/sudoers.d/stack
    Copy to Clipboard Toggle word wrap
  5. 切换到新的 stack 用户:

    [root@director ~]# su - stack
    [stack@director ~]$
    Copy to Clipboard Toggle word wrap

使用 stack 用户继续安装的过程。

4.2. 设置 undercloud 主机名

undercloud 的安装和配置过程需要一个完全限定域名。这意味着,您可能需要为 undercloud 设置主机名。

步骤

  1. 检查 undercloud 的基础和完整主机名:

    [stack@director ~]$ hostname
    [stack@director ~]$ hostname -f
    Copy to Clipboard Toggle word wrap
  2. 如果上面的任何一个命令报错或没有输出正确的主机名,则请使用 hostnamectl 设置主机名:

    [stack@director ~]$ sudo hostnamectl set-hostname manager.example.com
    [stack@director ~]$ sudo hostnamectl set-hostname --transient manager.example.com
    Copy to Clipboard Toggle word wrap
  3. 另外,director 还需要在 /etc/hosts 中包括一个带有系统主机名和基础名称的条目。例如,如果系统名是 manager.example.com,其使用的 IP 地址是 10.0.0.1/etc/hosts 则需要包括一个与以下内容类似的条目:

    10.0.0.1  manager.example.com manager
    Copy to Clipboard Toggle word wrap

4.3. 注册和更新 undercloud

在安装 director 之前,请先执行以下步骤:

  • 使用 Red Hat Subscription Manager 注册 undercloud
  • 订阅并启用相关的软件仓库
  • 更新 Red Hat Enterprise Linux 软件包

步骤

  1. 在 Content Delivery Network 中注册您的系统,在出现提示时输入您的用户门户网站的用户名和密码:

    [stack@director ~]$ sudo subscription-manager register
    Copy to Clipboard Toggle word wrap
  2. 查找 Red Hat OpenStack Platform director 的权利池 ID。例如:

    [stack@director ~]$ sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
    Subscription Name:   Name of SKU
    Provides:            Red Hat Single Sign-On
                         Red Hat Enterprise Linux Workstation
                         Red Hat CloudForms
                         Red Hat OpenStack
                         Red Hat Software Collections (for RHEL Workstation)
                         Red Hat Virtualization
    SKU:                 SKU-Number
    Contract:            Contract-Number
    Pool ID:             Valid-Pool-Number-123456
    Provides Management: Yes
    Available:           1
    Suggested:           1
    Service Level:       Support-level
    Service Type:        Service-Type
    Subscription Type:   Sub-type
    Ends:                End-date
    System Type:         Physical
    Copy to Clipboard Toggle word wrap
  3. 查找 Pool ID 的值并附加 Red Hat OpenStack Platform 13 的权利:

    [stack@director ~]$ sudo subscription-manager attach --pool=Valid-Pool-Number-123456
    Copy to Clipboard Toggle word wrap
  4. 禁用所有默认的仓库,然后启用 Red Hat Enterprise Linux 仓库:

    [stack@director ~]$ sudo subscription-manager repos --disable=*
    [stack@director ~]$ sudo subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-ha-for-rhel-7-server-rpms --enable=rhel-7-server-openstack-13-rpms
    Copy to Clipboard Toggle word wrap

    这些仓库包括了安装 director 所需的软件包。

    重要

    仅启用 第 2.5 节 “软件仓库的要求”中列出的软件仓库。其他软件仓库都可能会造成软件包和软件冲突,请勿启用任何其他软件仓库。

  5. 对系统上的软件进行一个更新来确保使用了最新的基本系统软件包:

    [stack@director ~]$ sudo yum update -y
    [stack@director ~]$ sudo reboot
    Copy to Clipboard Toggle word wrap

    现在,这个系统已经准备好可以进行 director 安装了。

4.4. 安装 director 软件包

以下操作过程旨在安装 Red hat OpenStack Platform director 的相关软件包。

步骤

  1. 安装用于安装和配置 director 的命令行工具:

    [stack@director ~]$ sudo yum install -y python-tripleoclient
    Copy to Clipboard Toggle word wrap
  2. 如果要创建包含 Ceph Storage 节点的 overcloud,需要额外安装 ceph-ansible 软件包:

    [stack@director ~]$ sudo yum install -y ceph-ansible
    Copy to Clipboard Toggle word wrap

4.5. 配置 director

在安装 director 时,需要使用特定的设置来决定您的网络配置。这些设置存储在 stack 用户的主目录内的一个模板中,即 undercloud.conf。以下操作过程展示了如何基于这个默认模板来进行配置。

步骤

  1. 红帽会提供一个基本的模板来帮助您设置安装所需的配置。把这个模板复制到 stack 用户的家目录中:

    [stack@director ~]$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
    Copy to Clipboard Toggle word wrap
  2. 编辑 undercloud.conf 文件。这个文件包含用于配置 undercloud 的设置。如果忽略或注释掉某个参数,undercloud 安装将使用默认值。

4.6. Director 配置参数

下方列出了可用于配置 undercloud.conf 文件的各种参数。

默认值

以下参数会在 undercloud.conf 文件的 [DEFAULT] 部分中进行定义:

undercloud_hostname
定义 undercloud 的完全限定主机名。如果设置,undercloud 安装将配置所有系统主机名设置。如果保留未设置,undercloud 将使用当前的主机名,但用户必须相应地配置所有主机名设置。
local_ip
director 的 Provisioning NIC 的 IP 地址。它同时还是 director 用来作为它的 DHCP 和 PXE 引导服务的 IP 地址。除非您需要为 Provisioning 网络使用不同的子网(例如,默认值与环境中存在的 IP 地址或子网有冲突),否则请保留默认值 192.168.24.1/24
undercloud_public_host
使用 SSL/TLS 时 director 的 Public API 的 IP 地址。该 IP 地址用于通过 SSL/TLS 从外部访问 director 端点。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用 /32 网络掩码)。
undercloud_admin_host
使用 SSL/TLS 时 director 的 Admin API 的 IP 地址。该 IP 地址用于通过 SSL/TLS 访问管理端点。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用 /32 网络掩码)。
undercloud_nameservers
用于 undercloud 主机名解析的 DNS 名称服务器列表。
undercloud_ntp_servers
用于帮助同步 undercloud 的日期和时间的网络时间协议服务器列表。
overcloud_domain_name

要在部署 overcloud 时使用的 DNS 域名。

注意

必须将 overcloud 参数 CloudDomain 设置为匹配的值。

subnets
用于置备和内省的路由网络子网的列表。请参阅子网,以了解更多信息。默认值仅包含 ctlplane-subnet 子网。
local_subnet
适用于 PXE 引导和 DHCP 接口的本地子网。local_ip 地址应该属于这个子网。 默认值为 ctlplane-subnet
undercloud_service_certificate
用于 OpenStack SSL/TLS 通讯的证书的位置和文件名。最理想的情况是从一个信任的证书认证机构获得这个证书。或者,您也可以根据 附录 A, SSL/TLS 证书配置 中的指南生成一个自签发的证书。另外,它还包括了为您的证书(无论是自签发证书还是从证书认证机构获得的证书)设置 SELinux 上下文的方法。
generate_service_certificate
定义 undercloud 安装期间是否生成 SSL/TLS 证书,此证书用于 undercloud_service_certificate 参数。undercloud 安装会保存生成的证书 /etc/pki/tls/certs/undercloud-[undercloud_public_vip].pemcertificate_generation_ca 参数中定义的 CA 将为此证书签名。
certificate_generation_ca
为所请求证书签名的 CA 的 certmonger 别名。只有设置了 generate_service_certificate 参数时才应使用此参数。如果选择 local CA,certmonger 会把本地 CA 证书提取至 /etc/pki/ca-trust/source/anchors/cm-local-ca.pem,并将它添加到信任链中。
service_principal
使用该证书的服务的 Kerberos 主体。只有您的 CA 要求 Kerberos 主体时才应使用此参数,例如在 FreeIPA 中。
local_interface

指定 director 的 Provisioning NIC 的接口。它同时还是 director 用来作为它的 DHCP 和 PXE 引导服务的设备。把这个项的值改为您需要使用的值。使用 ip addr 命令可以查看连接了哪些设备。以下是一个 ip addr 命令的结果输出示例:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:75:24:09 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.178/24 brd 192.168.122.255 scope global dynamic eth0
       valid_lft 3462sec preferred_lft 3462sec
    inet6 fe80::5054:ff:fe75:2409/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noop state DOWN
    link/ether 42:0b:c2:a5:c1:26 brd ff:ff:ff:ff:ff:ff
Copy to Clipboard Toggle word wrap

在这个例子中,External NIC 使用 eth0,Provisioning NIC 使用 eth1(当前没有被配置)。在这种情况下,把 local_interface 设置为 eth1。配置脚本会把这个接口附加到一个自定义的网桥(由 inspection_interface 参数定义)上。

local_mtu
要用于 local_interface 的 MTU。
hieradata_override
hieradata 覆盖文件的路径。如果设置此参数,undercloud 安装会将此文件复制到 /etc/puppet/hieradata 下,并将它设置为层次结构中的第一个文件。此参数可用于在 undercloud.conf 参数以外提供服务自定义配置。
net_config_override
网络配置覆盖模板的路径。如果设置此参数,undercloud 将使用 JSON 格式的模板来利用 os-net-config 参数配置网络。这将忽略 undercloud.conf 中设置的网络参数。如需示例,可参见 /usr/share/instack-undercloud/templates/net-config.json.template
inspection_interface
director 用来进行节点内省的网桥。这是 director 配置创建的一个自定义网桥。LOCAL_INTERFACE 会附加到这个网桥。请保留使用默认的值(br-ctlplane)。
inspection_iprange
在 PXE 引导和部署过程中,director 内省服务使用的 IP 地址范围(使用逗号分隔范围的起始值和终止值)。例如,192.168.24.100,192.168.24.120。请确保这个范围有足够的 IP 地址用于节点,并与 dhcp_startdhcp_end 指定的范围不冲突。
inspection_extras
指定在内省的过程中是否启用额外的硬件集合。在内省镜像中需要 python-hardwarepython-hardware-detect 软件包。
inspection_runbench
在节点发现过程中运行一组基准数据。把它设置为 true 来启用这个功能。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。更详细的相关信息,请参阅 第 6.2 节 “检查节点硬件”
inspection_enable_uefi
定义是否支持对包含仅带有 UEFI 固件的节点进行内省。如需了解更多信息,请参阅 附录 D, 备选引导模式
enable_node_discovery
自动注册通过 PXE 引导内省虚拟内存盘(ramdisk)的所有未知节点。 新节点使用 fake_pxe 作为默认驱动器,但您可以设置 discovery_default_driver 进行覆盖。您也可以使用内省规则为新注册的节点指定驱动器信息。
discovery_default_driver
为自动注册的节点设置默认驱动器。需要启用 enable_node_discovery 且必须在enabled_drivers 列表中包含驱动器。请参阅 附录 B, 电源管理驱动 了解支持的驱动器列表。
undercloud_debug
把 undercloud 服务的日志级别设置为 DEBUG。把值设为 true 来启用它。
undercloud_update_packages
定义是否在安装 undercloud 期间更新软件包。
enable_tempest
定义是否安装检查工具。默认设置是 false,您可以把它设为 true
enable_telemetry
定义是否在 undercloud 中安装 OpenStack Telemetry 服务(ceilometer、aodh、panko、gnocchi)。在 Red Hat OpenStack Platform 中,遥测的指标后端由 gnocchi 提供。如果将 enable_telemetry 参数设置为 true,则会自动安装和设置遥测服务。默认值为 false,即在 undercloud 中禁用遥测。
enable_ui
定义是否安装 director 的 Web UI。安装后您可以通过图形 Web 界面来执行 overcloud 规划和部署。如需更多信息,请参阅???。请注意,只有通过 undercloud_service_certificategenerate_service_certificate 启用了 SSL/TLS,才能使用此 UI。
enable_validations
定义是否安装所需项目来运行验证。
enable_novajoin
定义是否在 undercloud 中安装 novajoin 元数据服务。
ipa_otp
定义在 IPA 服务器注册 undercloud 节点使用的一次性密码。启用 enable_novajoin 之后需要提供此密码。
ipxe_enabled
定义使用 iPXE 还是标准的 PXE。默认值是 true,这会使用 iPXE;设置为 false 将使用标准的 PXE。如需了解更多信息,请参阅 附录 D, 备选引导模式
scheduler_max_attempts
调度程序尝试部署实例的次数上限。请将此值设为大于等于您要立即部署的裸机节点数量,从而在调度时避免可能出现的争用情形。
clean_nodes
确定是否在部署之间和内省之后擦除硬盘。
enabled_hardware_types
为 undercloud 启用的硬件类型的列表。请参阅 附录 B, 电源管理驱动,以查看受支持驱动器的列表。

密码

以下参数会在 undercloud.conf 文件的 [auth] 部分中进行定义:

undercloud_db_password; undercloud_admin_token; undercloud_admin_password; undercloud_glance_password; etc

剩下的参数用来定义 director 服务的访问信息。这些值不需要改变。如果 undercloud.conf 为空,director 的配置脚本会自动产生这些值。当配置脚本完成后,您就可以获得所有这些值。

重要

这些参数的配置文件示例使用 <None> 作为占位符。但将这些值设置为 <None> 会导致部署错误。

子网

每个置备子网在 undercloud.conf 文件中都有一个对应的同名部分。例如,以下内容可创建一个名为 ctlplane-subnet 的子网:

[ctlplane-subnet]
cidr = 192.168.24.0/24
dhcp_start = 192.168.24.5
dhcp_end = 192.168.24.24
inspection_iprange = 192.168.24.100,192.168.24.120
gateway = 192.168.24.1
masquerade = true
Copy to Clipboard Toggle word wrap

您可以根据自身环境所需来指定相应数量的置备网络。

gateway

overcloud 实例的网关。它是 undercloud 主机,会把网络流量转发到外部网络。除非您的 director 使用不同的 IP 地址,或直接使用外部网关,否则请保留默认值 192.168.24.1

注意

director 的配置脚本也可以使用相关的 sysctl 内核参数自动启用 IP 转发功能。

network_cidr
director 用来管理 overcloud 实例的网络,这是由 undercloud 的 neutron 服务管理的 Provisioning 网络。除非您的 Provisioning 网络使用了不同的子网,否则请保留默认值 192.168.24.0/24
masquerade
定义用于外部访问的网络伪装。这为 Provisioning 网络提供了一定程度的网络地址转换(network address translation,简称 NAT)功能,从而可以通过 director 实现外部访问。除非 Provisioning 网络使用了不同的子网,否则请保留默认值192.168.24.0/24
dhcp_start; dhcp_end
overcloud 节点 DHCP 分配范围的开始值和终止值。请确保此范围可以为节点提供足够的 IP 地址。

请根据您的配置所需来修改上述参数的值。完成后,请保存文件。

4.7. 安装 director

以下操作过程旨在安装 director 并执行一些基本的安装后任务。

步骤

  1. 运行以下命令,以在 undercloud 上安装 director:

    [stack@director ~]$ openstack undercloud install
    Copy to Clipboard Toggle word wrap

    这会启动 director 的配置脚本。director 会安装额外的软件包,并把它的服务配置为和 undercloud.conf 中的设置相符合的情况。这个脚本会需要一些时间来完成。

    完成后,此脚本会生成两个文件:

    • undercloud-passwords.conf - director 服务的所有密码列表。
    • stackrc - 用来访问 director 命令行工具的一组初始变量。
  2. 此脚本还会自动启动所有的 OpenStack Platform 服务。请使用以下命令查看已启用的服务:

    [stack@director ~]$ sudo systemctl list-units openstack-*
    Copy to Clipboard Toggle word wrap
  3. 此脚本会将 stack 用户添加到 docker 组中,以使 stack 用户有权访问容器管理命令。请使用以下命令刷新 stack 用户的权限:

    [stack@director ~]$ exec su -l stack
    Copy to Clipboard Toggle word wrap

    这个命令会提示您重新登录。请输入 stack 用户的密码。

  4. 运行以下命令初始化 stack 用户来使用命令行工具:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap

    提示信息现在指示,OpenStack 命令在对 undercloud 验证身份并执行命令;

    (undercloud) [stack@director ~]$
    Copy to Clipboard Toggle word wrap

director 的安装已完成。您现在可以使用 director 的命令行工具了。

4.8. 为 overcloud 节点获取镜像

director 需要以下几个磁盘镜像来部署 overcloud 节点:

  • 一个内省内核和 ramdisk - 用于通过 PXE 引导进行裸机系统内省。
  • 一个实施内核和 ramdisk - 用于系统部署和实施。
  • overcloud 内核、ramdisk 和完整镜像 - 写到节点硬盘中的基本 overcloud 系统。

以下操作过程旨在展示如何获取并安装这些镜像。

步骤

  1. 查找 stackrc 文件,以启用 director 的命令行工具:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. 安装 rhosp-director-imagesrhosp-director-images-ipa 软件包:

    (undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa
    Copy to Clipboard Toggle word wrap
  3. 把压缩文件展开到 stack 用户的家目录下的 images 目录中(/home/stack/images):

    (undercloud) [stack@director ~]$ cd ~/images
    (undercloud) [stack@director images]$ for i in /usr/share/rhosp-director-images/overcloud-full-latest-13.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-13.0.tar; do tar -xvf $i; done
    Copy to Clipboard Toggle word wrap
  4. 把这些镜像导入到 director:

    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/
    Copy to Clipboard Toggle word wrap

    这会将下列镜像上传到 director:

    • bm-deploy-kernel
    • bm-deploy-ramdisk
    • overcloud-full
    • overcloud-full-initrd
    • overcloud-full-vmlinuz

    部署操作和 overcloud 需要这些镜像。另外,此脚本还会在 director 的 PXE 服务器上安装内省镜像。

  5. 检查这些镜像是否已成功上传:

    (undercloud) [stack@director images]$ openstack image list
    +--------------------------------------+------------------------+
    | ID                                   | Name                   |
    +--------------------------------------+------------------------+
    | 765a46af-4417-4592-91e5-a300ead3faf6 | bm-deploy-ramdisk      |
    | 09b40e3d-0382-4925-a356-3a4b4f36b514 | bm-deploy-kernel       |
    | ef793cd0-e65c-456a-a675-63cd57610bd5 | overcloud-full         |
    | 9a51a6cb-4670-40de-b64b-b70f4dd44152 | overcloud-full-initrd  |
    | 4f7e33f4-d617-47c1-b36f-cbe90f132e5d | overcloud-full-vmlinuz |
    +--------------------------------------+------------------------+
    Copy to Clipboard Toggle word wrap

    这个列表没有显示内省 PXE 镜像。director 会把这些文件复制到 /httpboot

    (undercloud) [stack@director images]$ ls -l /httpboot
    total 341460
    -rwxr-xr-x. 1 root              root                5153184 Mar 31 06:58 agent.kernel
    -rw-r--r--. 1 root              root              344491465 Mar 31 06:59 agent.ramdisk
    -rw-r--r--. 1 ironic-inspector  ironic-inspector        337 Mar 31 06:23 inspector.ipxe
    Copy to Clipboard Toggle word wrap
注意

默认的 overcloud-full.qcow2 镜像是一种平面分区镜像。但是,您仍可以导入和使用完整的磁盘镜像。请参阅 附录 C, 完整的磁盘镜像 了解更多信息。

4.9. 为 Control Plane 设置名称服务器

Overcloud 节点需要一个名称服务器,才能通过 DNS 解析主机名。对于没有进行网络隔离的标准 overcloud,名称服务器会使用 undercloud 的 control plane 子网来定义。请按照以下过程操作,以定义环境的名称服务器。

步骤

  1. 查找 stackrc 文件,以启用 director 的命令行工具:

    [stack@director ~]$ source ~/stackrc
    Copy to Clipboard Toggle word wrap
  2. ctlplane-subnet 子网设置名称服务器:

    (undercloud) [stack@director images]$ openstack subnet set --dns-nameserver [nameserver1-ip] --dns-nameserver [nameserver2-ip] ctlplane-subnet
    Copy to Clipboard Toggle word wrap

    请为每一个名称服务器使用 --dns-nameserver 选项。

  3. 查看子网来验证名称解析服务器:

    (undercloud) [stack@director images]$ openstack subnet show ctlplane-subnet
    +-------------------+-----------------------------------------------+
    | Field             | Value                                         |
    +-------------------+-----------------------------------------------+
    | ...               |                                               |
    | dns_nameservers   | 8.8.8.8                                       |
    | ...               |                                               |
    +-------------------+-----------------------------------------------+
    Copy to Clipboard Toggle word wrap
重要

如果要将服务流量分离到单独的网络,overcloud 节点将使用网络环境配置文件中的 DnsServer 参数。

4.10. 后续步骤

undercloud 的配置到此结束。下一章将介绍基本的 overcloud 配置,包括注册节点和检查节点,并把它们标记为不同的节点角色。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat