第 4 章 安装 Undercloud
创建 Red Hat OpenStack Platform 环境的第一步是在 undercloud 系统上安装 director。这需要进行一些先期的步骤来启用所需的订阅和存储库。
4.1. 创建 director 安装用户
director 的安装过程需要一个非 root 的用户来执行命令。使用以下命令创建一个名为 stack 的用户并设置密码:
[root@director ~]# useradd stack [root@director ~]# passwd stack # specify a password
进行以下操作以使这个用户使用 sudo 时不需要输入密码:
[root@director ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@director ~]# chmod 0440 /etc/sudoers.d/stack
切换到新的 stack 用户:
[root@director ~]# su - stack [stack@director ~]$
使用 stack 用户继续安装的过程。
4.2. 为模板和镜像创建目录
director 使用系统镜像和 Heat 模板来创建 overcloud 环境。为保持文件的有序性,我们推荐创建以下目录来组织镜像和模板文件:
$ mkdir ~/images $ mkdir ~/templates
本指南中的其它部分会使用这两个目录来保存特定的文件。
4.3. 为系统设置主机名
director 的安装和配置过程需要一个完全限定域名(FQDN),这意味着您需要为 director 的主机设置主机名(hostname)。使用以下命令检查主机的主机名:
$ hostname # Checks the base hostname $ hostname -f # Checks the long hostname (FQDN)
如果需要,使用 hostnamectl 设置主机名:
$ sudo hostnamectl set-hostname manager.example.com $ sudo hostnamectl set-hostname --transient manager.example.com
另外,director 还需要在/etc/hosts 文件中包括一个带有系统主机名的项。例如,系统名是 manager.example.com,/etc/hosts 则需要包括一个和以下类似的项:
127.0.0.1 manager.example.com manager localhost localhost.localdomain localhost4 localhost4.localdomain4
4.4. 注册系统
若要安装 RHEL OpenStack Platform 安装器,首先需要使用 Red Hat Subscription Manager 注册主机系统,并且订阅所需的频道。
在 Content Delivery Network 中注册您的系统,在出现提示时输入您的用户门户网站的用户名和密码:
$ sudo subscription-manager register
找到 Red Hat OpenStack Platform director 所在的权利池。
$ sudo subscription-manager list --available --all
使用上一步中获得的池 ID 添加 Red Hat OpenStack Platform 10 权力:
$ sudo subscription-manager attach --pool=pool_id
禁用所有默认的仓库,然后启用 Red Hat Enterprise Linux 仓库:
$ sudo subscription-manager repos --disable=* $ 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-10-rpms
这些仓库包括了安装 director 所需的软件包。
仅启用 第 2.5 节 “软件仓库的要求”中列出的存储库。其他存储库都可能会造成软件包和软件冲突,请勿启用任何其他存储库。
对系统上的软件进行一个更新来确保使用了最新的基本系统软件包:
$ sudo yum update -y $ sudo reboot
现在,这个系统已经准备好可以进行 director 安装了。
4.5. 安装 director 软件包
使用以下命令安装 director 所需的命令行工具:
$ sudo yum install -y python-tripleoclient
这个命令会安装 director 所需的所有软件包。
4.6. 配置 director
director 的安装过程需要特定的设置来决定您的网络配置。这些设置保存在 stack 用户的家目录中的一个模板中(undercloud.conf)。
红帽会提供一个基本的模板来帮助您设置安装所需的配置。把这个模板复制到 stack 用户的家目录中:
$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
模板包含两个部分: [DEFAULT] 和 [auth]。
[DEFAULT] 部分包含下列参数:
- undercloud_hostname
- 定义 undercloud 的完全限定主机名。如果设置,undercloud 安装将配置所有系统主机名设置。如果保留未设置,undercloud 将使用当前的主机名,但用户必须相应地配置所有主机名设置。
- local_ip
-
director 的 Provisioning NIC 的 IP 地址。它同时还是 director 用来作为它的 DHCP 和 PXE 引导服务的 IP 地址。除非您需要为 Provisioning 网络使用不同的子网(例如,默认值与环境中存在的 IP 地址或子网有冲突),请保留使用默认值
192.0.2.1/24。 - network_gateway
uvercloud 实例的网关。它是 undercloud 主机,会把网络流量转发到外部网络。除非您的 director 使用不同的 IP 地址,或直接使用外部网关,否则请保留默认值(
192.0.2.1)。注意director 的配置脚本也可以使用相关的
sysctl内核参数自动启用 IP 转发功能。- undercloud_public_vip
-
director 的 Public API 的 IP 地址。使用 Provisioning 网络中的一个与其它任何 IP 地址或地址范围都不冲突的 IP 地址。例如,
192.0.2.2。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用/32网络掩码)。 - undercloud_admin_vip
-
director 的 Admin API 的 IP 地址。使用 Provisioning 网络中的一个与其它任何 IP 地址或地址范围都不冲突的 IP 地址。例如,
192.0.2.3。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用/32网络掩码)。 - undercloud_service_certificate
- 用于 OpenStack SSL 通讯的证书的位置和文件名。最理想的情况是从一个信任的证书认证机构获得这个证书。或者,您也可以根据 附录 A, SSL/TLS 证书配置 生成一个自签发的证书。另外,它还包括了为您的证书(无论是自签发证书还是从证书认证机构获得的证书)设置上下文的方法。
- generate_service_certificate
-
定义 undercloud 安装期间是否生成 SSL 证书,此证书用于
undercloud_service_certificate参数。undercloud 安装会保存生成的证书/etc/pki/tls/certs/undercloud-[undercloud_public_vip].pem。certificate_generation_ca参数中定义的 CA 将为此证书签名。 - certificate_generation_ca
-
为所请求证书签名的 CA 的
certmonger别名。只有设置了generate_service_certificate参数时才应使用此参数。如果选择localCA,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在这个例子中,External NIC 使用
eth0,Provisioning NIC 使用eth1(当前没有被配置)。在这种情况下,把local_interface设置为eth1。配置脚本会把这个接口附加到一个自定义的网桥(由inspection_interface参数定义)上。- local_mtu
-
要用于
local_interface的 MTU。 - network_cidr
-
director 用来管理 overcloud 实例的网络,这是由 undercloud 的
neutron服务管理的 Provisioning 网络。除非您的 Provisioning 网络使用了不同的子网,否则请保留默认值(192.0.2.0/24)。 - masquerade_network
-
定义用于外部访问的网络伪装。这为 Provisioning 网络提供了一定程度的网络地址转换(network address translation,简称 NAT)功能,从而可以通过 director 实现外部访问。除非 Provisioning 网络使用了不同的子网,请保留使用默认的值(
192.0.2.0/24)。 - dhcp_start; dhcp_end
- overcloud 节点 DHCP 分配范围的开始值和终止值。请确保此范围可以为节点提供足够的 IP 地址。
- 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.0.2.100,192.0.2.120。请确保这个范围有足够的 IP 地址,并和dhcp_start和dhcp_end指定的范围不冲突。 - inspection_extras
-
指定在内省的过程中是否启用额外的硬件集合。在内省镜像中需要
python-hardware或python-hardware-detect软件包。 - inspection_runbench
-
在节点发现过程中运行一组基准数据。把它设置为
true来启用这个功能。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。更详细的相关信息,请参阅 第 5.2 节 “检查节点硬件”。 - inspection_enable_uefi
- 定义是否支持对仅带有 UEFI 固件的节点进行内省
- undercloud_debug
-
把 undercloud 服务的日志级别设置为
DEBUG。把值设为true来启用它。 - enable_tempest
-
定义是否安装检查工具。默认设置是
false,您可以把它设为true。 - enable_mistral
- 定义是否在 undercloud 中安装 OpenStack Workflow Service(mistral)。
- enable_zaqar
- 定义是否在 undercloud 中安装 OpenStack Messaging Service(zaqar)。
- ipxe_deploy
-
定义使用 iPXE 还是标准的 PXE。默认值是
true,这会使用 iPXE;设置为false将使用标准的 PXE。如需了解更多相关信息,请参阅用户门户网站中的 "Changing from iPXE to PXE in Red Hat OpenStack Platform director" 。 - enable_telemetry
- 定义是否在 undercloud 中安装 OpenStack Telemetry 服务(ceilometer 和 aodh)。
- enable_ui
-
定义是否安装 director 的 Web UI。安装后您可以通过图形 Web 界面来执行 overcloud 规划和部署。如需更多信息,请参阅第 6 章 使用 Web UI 配置基本 Overcloud 要求。请注意,只有通过
undercloud_service_certificate或generate_service_certificate启用了 SSL/TLS,才能使用此 UI。 - enable_validations
- 定义是否安装所需项目来运行验证。
- store_events
- 定义是否在 undercloud 上存储 OpenStack Telemetry 服务 (ceilometer) 中的事件。
- scheduler_max_attempts
- 调度程序尝试部署实例的次数上限。请将此值设为大于等于您要立即部署的裸机节点数量,从而在调度时避免可能出现的争用情形。
[auth] 部分包含以下参数:
- undercloud_db_password; undercloud_admin_token; undercloud_admin_password; undercloud_glance_password; etc
-
剩下的参数用来定义 director 服务的访问信息。这些值不需要改变。如果
undercloud.conf为空,director 的配置脚本会自动产生这些值。当配置脚本完成后,您就可以获得所有这些值。
根据网络的具体情况修改这些参数的值。完成后,保存这个文件并运行以下命令:
$ openstack undercloud install
这会启动 director 的配置脚本。director 会安装额外的软件包,并把它的服务配置为和 undercloud.conf 中的设置相符合的情况。这个脚本会需要一些时间来完成。
完成后,配置脚本会产生两个文件:
-
undercloud-passwords.conf- director 服务的所有密码列表。 -
stackrc- 用来访问 director 命令行工具的一组初始变量。
运行以下命令初始化 stack 用户来使用命令行工具:
$ source ~/stackrc
您现在可以使用 director 的命令行工具了。
4.7. 为 Overcloud 节点获得镜像
director 需要以下几个磁盘镜像来部署 overcloud 节点:
- 一个内省内核和 ramdisk - 用于通过 PXE 引导进行裸机系统内省。
- 一个实施内核和 ramdisk - 用于系统部署和实施。
- overcloud 内核、ramdisk 和完整镜像 - 写到节点硬盘中的基本 overcloud 系统。
从 rhosp-director-images 和 rhosp-director-images-ipa 软件包中获得这些镜像:
$ sudo yum install rhosp-director-images rhosp-director-images-ipa
把压缩文件展开到 stack 用户的家目录下的 images 目录中(/home/stack/images):
$ cd ~/images $ for i in /usr/share/rhosp-director-images/overcloud-full-latest-10.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-10.0.tar; do tar -xvf $i; done
把这些镜像导入到 director:
$ openstack overcloud image upload --image-path /home/stack/images/
这会把 bm-deploy-kernel、bm-deploy-ramdisk、overcloud-full、overcloud-full-initrd 和 overcloud-full-vmlinuz 镜像上传到 director。部署操作和 overcloud 需要这些镜像。另外,此脚本还会在 director 的 PXE 服务器上安装内省镜像。
在 CLI 中查看镜像列表:
$ 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 | +--------------------------------------+------------------------+
这个列表没有显示内省 PXE 镜像。director 会把这些文件复制到 /httpboot。
[stack@host1 ~]$ 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 root root 337 Mar 31 06:23 inspector.ipxe
4.8. 在 Undercloud 的 Neutron 子网中设置名称解析服务器
overcloud 节点需要名称服务器来提供 DNS 主机名解析。对于没有网络隔离的标准 overcloud,此名称服务器在 undercloud 的 neutron 子网中定义。使用以下命令设置环境的名称服务器:
$ neutron subnet-list $ neutron subnet-update [subnet-uuid] --dns-nameserver [nameserver-ip]
如果使用多个 DNS 服务器,请使用以下语法:
$ neutron subnet-update [subnet-uuid] --dns-nameservers list=true [nameserver-ip] [nameserver-ip]
查看子网来验证名称解析服务器:
$ neutron subnet-show [subnet-uuid] +-------------------+-----------------------------------------------+ | Field | Value | +-------------------+-----------------------------------------------+ | ... | | | dns_nameservers | 8.8.8.8 | | ... | | +-------------------+-----------------------------------------------+
如果要将服务流量分离到单独的网络,overcloud 节点将使用网络环境配置文件中的 DnsServer 参数。
4.9. 备份 Undercloud
红帽提供了一个对 undercloud 主机的重要数据以及 Red Hat OpenStack Platform director 进行备份的方法。如需了解更多与 undercloud 备份相关的信息,请参阅备份和恢复 Director Undercloud" 指南。
4.10. 完成 Undercloud 的配置
undercloud 的配置到此结束。下一章将介绍基本的 overcloud 配置,包括注册节点和检查节点,并把它们标记为不同的节点角色。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.