Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
第 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. 注册系统
若要安装 Red Hat OpenStack Platform director,首先需要使用 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 11 权力:
$ 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-11-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.168.24.1/24
。 - network_gateway
overcloud 实例的网关。它是 undercloud 主机,会把网络流量转发到外部网络。除非您的 director 使用不同的 IP 地址,或直接使用外部网关,否则请保留默认值
192.168.24.1
。注意director 的配置脚本也可以使用相关的
sysctl
内核参数自动启用 IP 转发功能。- 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 的日期和时间的网络时间协议服务器列表。
- 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].pem
。certificate_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
在这个例子中,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.168.24.0/24
。 - masquerade_network
-
定义用于外部访问的网络伪装。这为 Provisioning 网络提供了一定程度的网络地址转换(network address translation,简称 NAT)功能,从而可以通过 director 实现外部访问。除非 Provisioning 网络使用了不同的子网,否则请保留默认值
192.168.24.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.168.24.100,192.168.24.120
。请确保这个范围有足够的 IP 地址用于节点,并与dhcp_start
和dhcp_end
指定的范围不冲突。 - inspection_extras
-
指定在内省的过程中是否启用额外的硬件集合。在内省镜像中需要
python-hardware
或python-hardware-detect
软件包。 - inspection_runbench
-
在节点发现过程中运行一组基准数据。把它设置为
true
来启用这个功能。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。更详细的相关信息,请参阅 第 5.2 节 “检查节点硬件”。 - inspection_enable_uefi
- 定义是否支持对仅带有 UEFI 固件的节点进行内省
- 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 11 中,遥测的指标后端由 gnocchi 提供。将
enable_telemetry
参数设置为true
将会自动安装和设置遥测服务。如果您不想在此节点上使用遥测,请将值设置为false
。 - enable_ui
-
定义是否安装 director 的 Web UI。安装后您可以通过图形 Web 界面来执行 overcloud 规划和部署。如需更多信息,请参阅???。请注意,只有通过
undercloud_service_certificate
或generate_service_certificate
启用了 SSL/TLS,才能使用此 UI。 - enable_validations
- 定义是否安装所需项目来运行验证。
- enable_legacy_ceilometer_api
-
定义是否在 undercloud 中启用传统的 OpenStack Telemetry 服务(Ceilometer)API。注意,传统 API 已被弃用,将从未来的版本中移除。请使用通过
enable_telemetry
安装的更新组件。 - enable_novajoin
-
定义是否在 undercloud 中安装
novajoin
元数据服务。 - ipa_otp
-
定义在 IPA 服务器注册 undercloud 节点使用的一次性密码。启用
enable_novajoin
之后需要提供此密码。 - store_events
- 定义是否在 undercloud 上存储 OpenStack Telemetry 服务 (ceilometer) 中的事件。
- ipxe_enabled
-
定义使用 iPXE 还是标准的 PXE。默认值是
true
,这会使用 iPXE;设置为false
将使用标准的 PXE。如需了解更多相关信息,请参阅用户门户网站中的 "Changing from iPXE to PXE in Red Hat OpenStack Platform director" 。 - scheduler_max_attempts
- 调度程序尝试部署实例的次数上限。请将此值设为大于等于您要立即部署的裸机节点数量,从而在调度时避免可能出现的争用情形。
- clean_nodes
- 确定是否在部署之间和内省之后擦除硬盘。
- enabled_drivers
- 为 undercloud 启用的裸机驱动器列表。请参考 附录 B, 电源管理驱动 了解受支持的驱动器列表。
[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 命令行工具的一组初始变量。
此配置也会自动启用所有 OpenStack Platform 服务。使用以下命令检查已启用的服务:
$ sudo systemctl list-units openstack-*
运行以下命令初始化 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-11.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-11.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
默认的 overcloud-full.qcow2
镜像是一种平面分区镜像。但是,您仍可以导入和使用完整的磁盘镜像。请参阅 附录 C, 完整的磁盘镜像 了解更多信息。
4.8. 在 undercloud 的 Neutron 子网中设置名称解析服务器
overcloud 节点需要名称服务器来提供 DNS 主机名解析。对于没有网络隔离的标准 overcloud,此名称服务器在 undercloud 的 neutron
子网中定义。使用以下命令定义环境的名称服务器:
$ openstack subnet list $ openstack subnet set --dns-nameserver [nameserver1-ip] --dns-nameserver [nameserver2-ip] [subnet-uuid]
查看子网来验证名称解析服务器:
$ openstack 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 配置,包括注册节点和检查节点,并把它们标记为不同的节点角色。