Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

第 4 章 安装 director

4.1. 配置 director

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

步骤

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

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

4.2. Director 配置参数

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

默认值

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

additional_architectures

overcloud 将支持的额外 (kernel) 架构的列表。目前,这仅限于 ppc64le

注意

如果启用了 ppc64le,您也必须将 ipxe_enabled 设为 False

certificate_generation_ca
为所请求证书签名的 CA 的 certmonger 别名。只有设置了 generate_service_certificate 参数时才应使用此参数。如果选择 local CA,certmonger 会把本地 CA 证书提取至 /etc/pki/ca-trust/source/anchors/cm-local-ca.pem,并将它添加到信任链中。
clean_nodes
确定是否在部署之间和内省之后擦除硬盘。
cleanup
清理临时文件。如果将这设为 False,则部署期间使用的临时文件将在命令运行后保留在原位。这可用于调试生成的文件或者确定是否发生了错误。
container_images_file

含有容器镜像信息的 Heat 环境文件。这可以是:

  • 所有需要的容器镜像的参数
  • ContainerImagePrepare 参数(用于推动必要的容器准备)。通常,含有此参数的文件被命名为 containers-prepare-parameter.yaml
custom_env_files
要添加到 undercloud 安装中的其他环境文件。
deployment_user
安装 undercloud 的用户。如果此参数保留为不设置,则使用当前的默认用户 (stack)。
discovery_default_driver
为自动注册的节点设置默认驱动器。需要启用 enable_node_discovery,且必须在 enabled_drivers 列表中包含驱动器。
docker_insecure_registries
docker 使用的不安全注册表的列表。如果从私有容器注册表等其他来源拉取镜像,通常需要此参数。在大多数情形中,如果已注册 undercloud,docker 将具有相关的证书,可从红帽 Container Catalog 或您的 Satellite 服务器拉取容器镜像。
docker_registry_mirror
/etc/docker/daemon.json 中配置的可选 registry-mirror
enable_ironic、enable_ironic_inspector、enable_mistral、enable_tempest、enable_validations、enable_zaqar
定义要为 director 启用的核心服务。保留设为 true
enable_ui
定义是否安装 director 的 Web UI。安装后您可以通过图形 Web 界面来执行 overcloud 规划和部署。请注意,只有通过 undercloud_service_certificategenerate_service_certificate 启用了 SSL/TLS,才能使用此 UI。
enable_node_discovery
自动注册通过 PXE 引导内省虚拟内存盘(ramdisk)的所有未知节点。 新节点使用 fake_pxe 作为默认驱动器,但您可以设置 discovery_default_driver 进行覆盖。您也可以使用内省规则为新注册的节点指定驱动器信息。
enable_novajoin
定义是否在 undercloud 中安装 novajoin 元数据服务。
enable_routed_networks
启用对路由控制平面网络的支持。
enable_swift_encryption
是否启用静态 Swift 加密。
enable_telemetry
定义是否在 undercloud 中安装 OpenStack Telemetry 服务(ceilometer、aodh、panko、gnocchi)。在Red Hat OpenStack Platform 中,遥测的指标后端由 gnocchi 提供。如果将 enable_telemetry 参数设置为 true,则会自动安装和设置遥测服务。默认值为 false,即在 undercloud 中禁用遥测。如果使用要利用指标数据的其他产品,如 Red Hat CloudForms,则需要这个参数。
enabled_hardware_types
要为 undercloud 启用的硬件类型的列表。
generate_service_certificate
定义 undercloud 安装期间是否生成 SSL/TLS 证书,此证书用于 undercloud_service_certificate 参数。undercloud 安装会保存生成的证书 /etc/pki/tls/certs/undercloud-[undercloud_public_vip].pemcertificate_generation_ca 参数中定义的 CA 将为此证书签名。
heat_container_image
要使用的 heat 容器镜像的 URL。请保留不设置。
heat_native
使用原生 heat 模板。请保留为 true
hieradata_override
hieradata 覆盖文件的路径。如果设置此参数,undercloud 安装会将此文件复制到 /etc/puppet/hieradata 下,并将它设置为层次结构中的第一个文件。此参数可用于在 undercloud.conf 参数以外提供服务自定义配置。
inspection_extras
指定在内省的过程中是否启用额外的硬件集合。在内省镜像中需要 python-hardwarepython-hardware-detect 软件包。
inspection_interface
director 用来进行节点内省的网桥。这是 director 配置创建的一个自定义网桥。LOCAL_INTERFACE 会附加到这个网桥。请保留使用默认的值(br-ctlplane)。
inspection_runbench
在节点内省过程中运行一组基准测试。把它设置为 true 来启用这个功能。如果您需要在检查注册节点的硬件时执行基准数据分析操作,则需要使用这个参数。
ipa_otp
定义在 IPA 服务器注册 undercloud 节点使用的一次性密码。启用 enable_novajoin 之后需要提供此密码。
ipxe_enabled
定义使用 iPXE 还是标准的 PXE。默认值是 true,这会使用 iPXE;设置为 false 则使用标准的 PXE。
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_ip
director 的 Provisioning NIC 的 IP 地址。它同时还是 director 用来作为它的 DHCP 和 PXE 引导服务的 IP 地址。除非您需要为 Provisioning 网络使用不同的子网(例如,默认值与环境中存在的 IP 地址或子网有冲突),否则请保留默认值 192.168.24.1/24
local_mtu
用于 local_interface 的 MTU。
local_subnet
适用于 PXE 引导和 DHCP 接口的本地子网。local_ip 地址应该属于这个子网。 默认值为 ctlplane-subnet
net_config_override
网络配置覆盖模板的路径。如果设置此参数,undercloud 将使用 JSON 格式的模板来利用 os-net-config 参数配置网络。这将忽略 undercloud.conf 中设置的网络参数。如需示例,请参阅 /usr/share/python-tripleoclient/undercloud.conf.sample
output_dir
用于输出状态、已处理的 heat 模板和 ansible 部署文件的目录。
overcloud_domain_name

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

注意

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

roles_file
在 undercloud 安装时要覆盖的角色文件。强烈建议您保留为不设置,以便 director 安装使用默认的角色文件。
scheduler_max_attempts
调度程序尝试部署实例的次数上限。请将此值设为大于等于您要立即部署的裸机节点数量,从而在调度时避免可能出现的争用情形。
service_principal
使用该证书的服务的 Kerberos 主体。只有您的 CA 要求 Kerberos 主体时才应使用此参数,例如在 FreeIPA 中。
subnets
用于置备和内省的路由网络子网的列表。请参阅子网,以了解更多信息。默认值仅包含 ctlplane-subnet 子网。
templates
要覆盖的 heat 模板文件。
undercloud_admin_host
使用 SSL/TLS 时 director 的 Admin API 的 IP 地址。该 IP 地址用于通过 SSL/TLS 访问管理端点。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用 /32 网络掩码)。
undercloud_debug
把 undercloud 服务的日志级别设置为 DEBUG。把值设为 true 来启用它。
undercloud_enable_selinux
在部署期间启用或禁用 SELinux。强烈建议您保留设为 true,除非要调试问题。
undercloud_hostname
定义 undercloud 的完全限定主机名。如果设置,undercloud 安装将配置所有系统主机名设置。如果保留未设置,undercloud 将使用当前的主机名,但用户必须相应地配置所有主机名设置。
undercloud_log_file
用于存储 undercloud 安装/升级日志的日志文件的路径。默认情况下,日志文件是主目录中的 install-undercloud.log。例如,/home/stack/install-undercloud.log
undercloud_nameservers
用于 undercloud 主机名解析的 DNS 名称服务器列表。
undercloud_ntp_servers
用于帮助同步 undercloud 的日期和时间的网络时间协议服务器列表。
undercloud_public_host
使用 SSL/TLS 时 director 的 Public API 的 IP 地址。该 IP 地址用于通过 SSL/TLS 从外部访问 director 端点。director 的配置会把这个 IP 地址附加到它的软件网桥上作为一个路由的 IP 地址(使用 /32 网络掩码)。
undercloud_service_certificate
用于 OpenStack SSL/TLS 通信的证书的位置和文件名。理想的情况是从一个信任的证书认证机构获得这个证书。或者,您也可以生成一个自签名的证书。另外,这些指导也包括为您的证书(无论是自签名证书还是从证书认证机构获得的证书)设置 SELinux 上下文的信息。
undercloud_update_packages
定义是否在安装 undercloud 期间更新软件包。

子网

每个置备子网在 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

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

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

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

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

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

4.3. 安装 director

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

步骤

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

    [stack@director ~]$ openstack undercloud install

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

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

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

    [stack@director ~]$ sudo docker ps
  3. 此脚本会将 stack 用户添加到 docker 组中,以使 stack 用户有权访问容器管理命令。请使用以下命令刷新 stack 用户的权限:

    [stack@director ~]$ exec su -l stack

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

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

    [stack@director ~]$ source ~/stackrc

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

    (undercloud) [stack@director ~]$

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

4.4. 为 overcloud 节点获取镜像

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

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

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

4.4.1. 单一架构 overcloud

这些镜像和规程是部署和 overcloud 所需要的。

步骤

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

    [stack@director ~]$ source ~/stackrc
  2. 安装 rhosp-director-imagesrhosp-director-images-ipa 软件包:

    (undercloud) [stack@director ~]$ sudo yum install rhosp-director-images rhosp-director-images-ipa
  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-14.0.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-14.0.tar; do tar -xvf $i; done
  4. 把这些镜像导入到 director:

    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path /home/stack/images/

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

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

    另外,此脚本还会在 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 |
    +--------------------------------------+------------------------+

    这个列表没有显示内省 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

4.4.2. 多架构 overcloud

这些是部署操作和 overcloud 所需要的镜像和规程。

步骤

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

    [stack@director ~]$ source ~/stackrc
  2. 安装 rhosp-director-images-all 软件包:

    (undercloud) [stack@director ~]$ sudo yum install rhosp-director-images-all
  3. 将存档解包到特定于架构的目录中,该目录位于 stack 用户的主目录下的 images 目录 (/home/stack/images) 中:

    (undercloud) [stack@director ~]$ cd ~/images
    (undercloud) [stack@director images]$ for arch in x86_64 ppc64le ; do mkdir $arch ; done
    (undercloud) [stack@director images]$ for arch in x86_64 ppc64le ; do for i in /usr/share/rhosp-director-images/overcloud-full-latest-14.0-${arch}.tar /usr/share/rhosp-director-images/ironic-python-agent-latest-14.0-${arch}.tar ; do tar -C $arch -xf $i ; done ; done
  4. 把这些镜像导入到 director:

    (undercloud) [stack@director ~]$ cd ~/images
    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path ~/images/ppc64le --architecture ppc64le --whole-disk --http-boot /tftpboot/ppc64le
    (undercloud) [stack@director images]$ openstack overcloud image upload --image-path ~/images/x86_64/ --http-boot /tftpboot

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

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

      另外,此脚本还会在 director 的 PXE 服务器上安装内省镜像。

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

    (undercloud) [stack@director images]$ openstack image list
    +--------------------------------------+---------------------------+--------+
    | ID                                   | Name                      | Status |
    +--------------------------------------+---------------------------+--------+
    | 6d1005ba-ec82-473b-8e33-88aadb5b6792 | bm-deploy-kernel          | active |
    | fb723b33-9f11-45f5-b25b-c008bf509290 | bm-deploy-ramdisk         | active |
    | 6a6096ba-8f79-4343-b77c-4349f7b94960 | overcloud-full            | active |
    | de2a1bde-9351-40d2-bbd7-7ce9d6eb50d8 | overcloud-full-initrd     | active |
    | 67073533-dd2a-4a95-8e8b-0f108f031092 | overcloud-full-vmlinuz    | active |
    | 69a9ffe5-06dc-4d81-a122-e5d56ed46c98 | ppc64le-bm-deploy-kernel  | active |
    | 464dd809-f130-4055-9a39-cf6b63c1944e | ppc64le-bm-deploy-ramdisk | active |
    | f0fedcd0-3f28-4b44-9c88-619419007a03 | ppc64le-overcloud-full    | active |
    +--------------------------------------+---------------------------+--------+

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

    (undercloud) [stack@director images]$ ls -l /tftpboot /tftpboot/ppc64le/
    /tftpboot:
    total 422624
    -rwxr-xr-x. 1 root   root     6385968 Aug  8 19:35 agent.kernel
    -rw-r--r--. 1 root   root   425530268 Aug  8 19:35 agent.ramdisk
    -rwxr--r--. 1 ironic ironic     20832 Aug  8 02:08 chain.c32
    -rwxr--r--. 1 ironic ironic    715584 Aug  8 02:06 ipxe.efi
    -rw-r--r--. 1 root   root          22 Aug  8 02:06 map-file
    drwxr-xr-x. 2 ironic ironic        62 Aug  8 19:34 ppc64le
    -rwxr--r--. 1 ironic ironic     26826 Aug  8 02:08 pxelinux.0
    drwxr-xr-x. 2 ironic ironic        21 Aug  8 02:06 pxelinux.cfg
    -rwxr--r--. 1 ironic ironic     69631 Aug  8 02:06 undionly.kpxe
    
    /tftpboot/ppc64le/:
    total 457204
    -rwxr-xr-x. 1 root             root              19858896 Aug  8 19:34 agent.kernel
    -rw-r--r--. 1 root             root             448311235 Aug  8 19:34 agent.ramdisk
    -rw-r--r--. 1 ironic-inspector ironic-inspector       336 Aug  8 02:06 default
注意

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

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

如果您希望 overcloud 解析外部主机名,如 cdn.redhat.com,建议您在 overcloud 节点上设置名称服务器。对于没有进行网络隔离的标准 overcloud,名称服务器会使用 undercloud 的控制平面子网来定义。请按照以下过程操作,以定义环境的名称服务器。

步骤

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

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

    (undercloud) [stack@director images]$ openstack subnet set --dns-nameserver [nameserver1-ip] --dns-nameserver [nameserver2-ip] ctlplane-subnet

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

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

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

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

4.6. 后续步骤

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