第 1 章 安装和配置 OpenStack Bare Metal Provisioning(ironic)


OpenStack Bare Metal Provisioning(ironic)提供了为最终用户部署和管理物理机所需的组件。Overcloud 中的 Bare Metal Provisioning 服务会和以下 OpenStack 服务进行交流:

  • OpenStack Compute(nova)提供了虚拟机实例的调度、租户配额、IP 配置功能,以及用于虚拟机实例管理的一个面向用户的 API;而 Bare Metal Provisioning 为硬件管理提供了一个管理 API。请选择一个独立的、专用的 openstack-nova-compute 主机来使用 Bare Metal Provisioning 驱动,并处理 Bare Metal Provisioning 请求。
  • OpenStack Identity(keystone)提供了请求的身份验证功能,并帮助 Bare Metal Provisioning 定位其它 OpenStack 服务。
  • OpenStack Image 服务(glance)提供了管理镜像以及镜像元数据的功能。
  • OpenStack Networking(neutron)提供了 DHCP 和网络配置功能。

1.1. 配置要求

本章介绍了设置 Bare Metal Provisioning 所需的配置要求,包括安装的假设条件、硬件要求和网络要求。

1.1.1. Bare Metal Provisioning 安装的假设条件

Bare Metal Provisioning 包括了一组组件,这些组件可以被配置为在一个节点上运行,也可以配置为在多个独立节点上运行。本文档中所使用的示例是在一个节点上安装并配置所有 Bare Metal Provisioning 组件。同时,本文档还基于所有 OpenStack Identity、OpenStack Image、OpenStack Compute 和 OpenStack Networking 服务都已经被安装并配置这一个假设条件的。另外,Bare Metal Provisioning 还需要以下外部服务,这些服务需要作为先决条件已被安装并配置:

  • 一个用来保存硬件信息和状态的数据库服务器。本文档假设 RHEL OpenStack Platform 环境已配置了 MariaDB 数据库服务。
  • 一个消息服务。本文档假设已在环境中配置了 RabbitMQ。

如果您使用 director 部署 OpenStack 环境,数据库服务和消息服务会在 Overcloud 中的一个 Controller 节点上安装。

RHEL OpenStack Platform 需要在运行 Red Hat Enterprise Linux 7 的 Compute 节点和 OpenStack Networking 节点上使用 iptables 而不是 firewalld。本文档中使用的防火墙规则都是通过 iptables 设置的。

1.1.2. Bare Metal Provisioning 的硬件要求

运行 Bare Metal Provisioning 组件的节点需要满足以下的硬件要求:

  • 支持 Intel 64 或 AMD64 CPU 扩展的 64 位 x86 处理器。
  • 最少 6GB 内存。
  • 最少具有 40GB 可用磁盘空间。
  • 最少两个 1 Gbps 网卡。但是,推荐使用 10 Gbps 网卡来作为 Provisioning 网络的接口(特别是您需要部署大量裸机时)。
  • 安装 Red Hat Enterprise Linux 7.1 作为主机操作系统。

或者,在一个专门的 openstack-nova-compute 节点上安装并配置 Bare Metal Provisioning 组件。如需了解和硬件要求相关的信息,请参阅 Director Installation and Usage 指南中的 Compute Node Requirements 一节。

根据您所要安装的操作系统的不同,所部署的裸机的硬件要求也会有所不同。对于 Red Hat Enterprise Linux 7,请参阅 Red Hat Enterprise Linux 7 Installation Guide。对于 Red Hat Enterprise Linux 6,请参阅 Red Hat Enterprise Linux 6 Installation Guide

1.1.3. Bare Metal Provisioning 的网络要求

Bare Metal Provisioning 最少需要两个网络:

  • Provisioning 网络:Bare Metal Provisioning 用来部署和管理裸机的私人网络,它提供了 DHCP 和 PXE 引导功能来帮助发现裸机系统。这个网络最好使用一个主干(trunk)接口中的原生 VLAN,这样 Bare Metal Provisioning 就可以处理 PXE 引导和 DHCP 请求。另外,这个网络还被用来通过被部署的裸机上的带外(out-of-band) 驱动控制电源管理。
  • External 网络 - 用来进行远程连接的一个独立网络。连接到这个网络的接口需要一个可路由的 IP 地址(静态定义或通过一个外部 DHCP 服务动态分配)。

要被部署的裸机需要满足以下要求:

  • 两个网卡:一个作为 provisioning 网络,另一个用于外部连接。
  • 连接到 provisioning 网络上的一个电源管理接口(如 IPMI)。如果您只需要使用 SSH 用于测试,则不需要这个接口。
  • 在 provisioning 网络中的 PXE 引导处于系统引导顺序的最前面(在硬盘引导和 CD/DVD 引导之前)。系统中的所有其它网卡都需要禁用 PXE 引导。

1.2. 订阅所需的频道

为了安装 Bare Metal Provisioning 软件包,需要使用 Red Hat Subscription Manager 注册您的服务器。如果您在一个 compute 节点上安装 Bare Metal Provisioning,您的服务器可能已经进行了适当的订阅。运行 yum repolist 命令检查在以下操作中使用的频道是否已经被订阅。

订阅所需的频道

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

    # subscription-manager register
  2. 找到包括安装 Bare Metal Provisioning 所需频道的权利池:

    # subscription-manager list --available | grep -A8 "Red Hat Enterprise Linux Server"
    # subscription-manager list --available | grep -A8 "Red Hat Enterprise Linux OpenStack Platform"
  3. 使用在上一步所获得的权利池 ID 把 Red Hat Enterprise Linux Server 7Red Hat Enterprise Linux OpenStack Platform 的权利附加到系统上。运行以下命令:

    # subscription-manager attach --pool=POOL_ID
  4. 启用所需的频道:

    # subscription-manager repos --enable=rhel-7-server-rpms --enable=rhel-7-server-openstack-7.0-rpms --enable=rhel-7-server-rh-common-rpms --enable=rhel-7-server-optional-rpms --enable=rhel-7-server-openstack-7.0-optools-rpms

1.3. 安装 Bare Metal Provisioning 软件包

Bare Metal Provisioning 需要以下软件包:

openstack-ironic-api

提供 Bare Metal Provisioning API 服务。

openstack-ironic-conductor

提供 Bare Metal Provisioning 的 conductor 服务。conductor 允许添加、编辑和删除节点、关闭或开启带有 IPMI 或 SSH 功能的节点,并可以部署、实施和停用裸机节点。

python-ironicclient

为和 Bare Metal Provisioning 服务进行交流提供一个命令行接口。

安装软件包:

# yum install openstack-ironic-api openstack-ironic-conductor python-ironicclient

1.4. 创建 Bare Metal Provisioning 数据库

创建 Bare Metal Provisioning 使用的数据库。在这个过程中进行的所有操作都需要在数据库服务器上进行,并需要以 root 用户登录。

创建 Bare Metal Provisioning 数据库

  1. 连接到数据库服务:

    # mysql -u root -p
  2. 创建 ironic 数据库:

    mysql> CREATE DATABASE ironic;
  3. 创建一个 ironic 数据库用户,并为这个用户分配可以访问 ironic 数据库的权限:

    mysql> GRANT ALL ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD';
    mysql> GRANT ALL ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';

    PASSWORD 替换为用户在数据库服务器上进行验证的密码。

  4. 刷新数据库权限使它们马上生效:

    mysql> FLUSH PRIVILEGES;
  5. 退出 mysql 客户端:

    mysql> quit
  6. 设置 connection 配置关键字的值:

    # openstack-config --set /etc/ironic/ironic.conf \
       database connection mysql://ironic:PASS@IP/ironic

    替换以下值:

    • 使用数据库用户的密码替换 PASS
    • 使用数据库服务器的 IP 地址或主机名替换 IP
重要

在 "connection" 配置关键字中指定的 IP 地址或主机名必须和在创建 Bare Metal Provisioning 数据库时设置的 Bare Metal Provisioning 数据库用户可以访问的系统的 IP 地址或主机名相匹配。如果创建的数据库是一个本地数据库,并分配给数据库用户访问 localhost 的权限,您必须使用 localhost

1.5. 创建 Bare Metal Provisioning Identity 记录

创建 Bare Metal Provisioning 所需的 Identity 记录。这些记录可以帮助其它 OpenStack 服务定位并访问 Bare Metal Provisioning 提供的功能。

这个过程假设您已经创建了一个管理用户账户和一个 services 租户。

在 Identity 服务器上进行这个过程;或在任何已经复制了 keystonerc_admin 文件并安装了 keystone 命令行工具的系统上进行。

为 Bare Metal Provisioning 创建 Identity 记录

  1. 把 shell 设置为以管理用户身份访问 Identity:

    # source ~/keystonerc_admin
  2. 创建 ironic 用户:

    # keystone user-create --name ironic \
       --pass PASSWORD \
       --email IRONIC_EMAIL

    使用 Bare Metal Provisioning 用来和 Identity 进行验证时使用的密码替换 PASSWORD;使用 Bare Metal Provisioning 所使用的电子邮件地址替换 IRONIC_EMAIL

  3. services 租户上下文中把 ironic 用户和 admin 角色进行关联:

    # keystone user-role-add --user ironic --role admin --tenant services
  4. 创建 ironic 服务项:

    # keystone service-create --name ironic \
       --type baremetal \
       --description "OpenStack Bare Metal Provisioning Service"
  5. 创建 ironic 端点项:

    # keystone endpoint-create \
       --service-id IRONIC_ID
       --publicurl 'http://IP:6385' \
       --adminurl 'http://IP:6385' \
       --internalurl 'http://IP:6385'

    使用上一步返回的唯一 ID 替换 IRONIC_ID;使用提供 Bare Metal Provisioning API 服务的服务器的 IP 地址或主机名替换 IP

1.6. 配置 Bare Metal Provisioning 身份验证

把 Bare Metal Provisioning 配置为使用 Identity 进行身份验证。在这个过程中进行的所有操作都需要在运行 Bare Metal Provisioning 的服务器上进行,并需要以 root 用户身份登录。

把 Bare Metal Provisioning 配置为使用 Identity 进行身份验证。

  1. 设置 Bare Metal Provisioning 需要使用的 Identity public 和 admin 端点:

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken auth_uri http://IP:5000/v2.0
    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken identity_uri http://IP:35357/

    使用 Identity 服务器的 IP 地址或主机名替换 IP

  2. 设置 Bare Metal Provisioning 作为 services 租户进行验证:

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_tenant_name services
  3. 设置 Bare Metal Provisioning 使用 ironic 管理用户帐号进行验证:

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_user ironic
  4. 设置 Bare Metal Provisioning 来使用正确的 ironic 管理用户账户密码:

    # openstack-config --set /etc/ironic/ironic.conf \
       keystone_authtoken admin_password PASSWORD

    使用在创建 ironic 用户时设置的密码替换 PASSWORD

为了启用 bare metal provisioning,OpenStack 组件需要可以访问 Bare Metal Provisioning API 服务。修改运行 Bare Metal Provisioning 的服务器上的防火墙规则。在这个过程中进行的全部操作都需要在所有运行 Bare Metal Provisioning 服务的服务器上运行,并需要以 root 用户登录。

配置防火墙来允许 Bare Metal Provisioning 的网络流量

  1. 在一个文本编辑程序中打开 /etc/sysconfig/iptables 文件。
  2. 添加一个 INPUT 规则来允许端口 6385 上的 TCP 流量。这个新规则必须出现在所有 REJECT 流量的 INPUT 规则之前:

    -A INPUT -p tcp -m multiport --dports 6385 -j ACCEPT
  3. /etc/sysconfig/iptables 文件中保存所做的改变。
  4. 重启 iptables 服务来使这些改变生效:

    # systemctl restart iptables.service

RabbitMQ 是一个默认的(推荐使用的)消息处理程序,RabbitMQ 消息服务由 rabbitmq-server 软件包提供。在这个过程中进行的所有操作都需要在运行 Bare Metal Provisioning 的服务器上进行,并需要以 root 用户身份登录。

以下过程假设 RabbitMQ 消息服务已被安装并配置,一个 ironic 用户和相关的密码已在提供消息服务的服务器上创建。

配置 Bare Metal Provisioning 来使用 RabbitMQ Message Broker

  1. 把 RabbitMQ 设置为 RPC 后端:

    # openstack-config --set /etc/ironic/ironic.conf \
       DEFAULT rpc_backend ironic.openstack.common.rpc.impl_kombu
  2. 设置 Bare Metal Provisioning 来连接到 RabbitMQ 主机:

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_host RABBITMQ_HOST

    使用运行消息服务的服务器的 IP 地址或主机名替换 RABBITMQ_HOST

  3. 把消息服务的端口设置为 5672:

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_port 5672
  4. 设置在配置 RabbitMQ 时为 Bare Metal Provisioning 创建的 RabbitMQ 用户名和密码:

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_userid ironic
    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_password IRONIC_PASS

    使用为 Bare Metal Provisioning 创建的 RabbitMQ 密码替换 IRONIC_PASS

  5. 当 RabbitMQ 启动时,ironic 用户会被授予到所有资源(通过虚拟主机)的读和写的权限。配置 Bare Metal Provisioning 来连接到这个虚拟主机:

    # openstack-config --set /etc/ironic/ironic.conf \
       oslo_messaging_rabbit rabbit_virtual_host /

Bare Metal Provisioning 使用 OpenStack Networking 实现 DHCP 和网络配置;使用 Image 服务来管理用于引导物理机的镜像。这需要配置 Bare Metal Provisioning 来与 OpenStack Networking 和 Image 服务进行连接和通讯。在这个过程中进行的操作需要在所有运行 Bare Metal Provisioning 服务的服务器上运行,并需要以 root 用户登录。

配置 Bare Metal Provisioning 与 OpenStack Networking 和 OpenStack Image 进行通讯

  1. 配置 Bare Metal Provisioning 来使用 OpenStack Networking 端点:

    # openstack-config --set /etc/ironic/ironic.conf \
       neutron url http://NEUTRON_IP:9696

    使用运行 OpenStack Networking 服务的服务器的 IP 地址或主机名替换 NEUTRON_IP

  2. 设置 Bare Metal Provisioning 来与 Image 服务进行交流:

    # openstack-config --set /etc/ironic/ironic.conf \
       glance glance_host GLANCE_IP

    使用运行 Image 服务的服务器的 IP 地址或主机名替换 GLANCE_IP

  3. 启动 Bare Metal Provisioning API 服务,并把它配置为在引导时启动:

    # systemctl start openstack-ironic-api.service
    # systemctl enable openstack-ironic-api.service
  4. 创建 Bare Metal Provisioning 数据库的数据表:

    # ironic-dbsync --config-file /etc/ironic/ironic.conf create_schema
  5. 启动 Bare Metal Provisioning conductor 服务,并把它配置为在引导时启动:

    # systemctl start openstack-ironic-conductor.service
    # systemctl enable openstack-ironic-conductor.service

配置 Compute 来使用 Bare Metal Provisioning 驱动。通过这个驱动,Compute 可以使用与部署虚拟机相同的 API 来部署物理机。每个 openstack-nova-compute 节点只能指定一个驱动,因此,使用 Bare Metal Provisioning 启动的节点将只能部署虚拟机。我们推荐使用一个专用的 openstack-nova-compute 节点来通过 Bare Metal Provisioning 启动部署所有的裸机节点。在这个过程中进行的所有操作需要在一个指定的 compute 节点和 Compute 控制器节点上运行,并需要以 root 用户登录。

配置 OpenStack Compute 来使用 Bare Metal Provisioning 驱动

  1. 设置 Compute 来使用 Bare Metal Provisioning 驱动:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_driver nova.virt.ironic.IronicDriver
  2. 设置 Compute 来使用 No-op 防火墙驱动:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
  3. 设置 Compute 来使用 Bare Metal Provisioning scheduler host manager:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
  4. 设置虚拟 RAM 到物理 RAM 的分配比率:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT ram_allocation_ratio 1.0
  5. 设置为主机保留的磁盘空间大小(以 MB 为单位):

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT reserved_host_memory_mb 0
  6. 设置 Compute 来使用 clustered compute manager:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT compute_manager ironic.nova.compute.manager.ClusteredComputeManager
  7. 设置 Compute 来使用默认的 Bare Metal Provisioning 调度过滤:

    # openstack-config --set /etc/nova/nova.conf \
       DEFAULT scheduler_use_baremetal_filters True
  8. 设置 Compute 来为 Bare Metal Provisioning 使用正确的验证信息:

    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_username ironic
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_password PASSWORD
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_url http://IDENTITY_IP:35357/v2.0
    # openstack-config --set /etc/nova/nova.conf \
       ironic admin_tenant_name services
    # openstack-config --set /etc/nova/nova.conf \
       ironic api_endpoint http://IRONIC_API_IP:6385/v1

    替换以下值:

    • PASSWORD 替换为 Bare Metal Provisioning 用来和 Identity 进行验证时使用的密码 。
    • 使用运行 Identity 的服务器的 IP 地址或主机名替换 IDENTITY_IP
    • 使用运行 Bare Metal Provisioning API 服务的服务器的 IP 地址或主机名替换 IRONIC_API_IP
  9. 在 Compute 控制器节点上重启 Compute 的调度服务:

    # systemctl restart openstack-nova-scheduler.service
  10. 在 Compute 节点上重启 compute 服务:

    # systemctl restart openstack-nova-compute.service

配置 OpenStack Networking 来与 Bare Metal Provisioning 进行交流实现 DHCP、PXE 引导,以及其它要求。以下步骤会在一个扁平化网络用例中配置 OpenStack Networking 用来实现裸机部署。这个配置使用 ML2 插件和 Open vSwitch agent。

确保用于部署的网络接口和 OpenStack Networking 节点上用于远程连接的网络接口不是同一个。以下过程会使用部署的网络接口创建一个网桥,并丢掉所有远程连接。

以下过程中的所有步骤都需要在运行 OpenStack Networking 的服务器上进行,并需要以 root 用户登录。

配置 OpenStack Networking 来和 Bare Metal Provisioning 进行交流

  1. 设置启动类型、租户网络类型和 mechanism 驱动:

    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ml2 type_drivers flat
    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ml2 tenant_network_types flat
    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ml2 mechanism_drivers openvswitch
  2. 设置扁平化网络可以创建的物理网络的名称:

    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ml2_type_flat flat_networks PHYSNET

    使用 OpenStack Networking 和 Bare Metal Provisioning(provisioning 网络)要使用的物理网络的名称替换 PHYSNET

  3. 设置 VLAN 供应商和租户网络可以使用的物理网络名称:

    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ml2_type_vlan network_vlan_ranges PHYSNET

    使用 OpenStack Networking 和 Bare Metal Provisioning(provisioning 网络)要使用的物理网络的名称替换 PHYSNET

  4. 设置防火墙驱动,并启用安全组:

    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       securitygroup firewall_driver neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       securitygroup enable_security_group True
  5. 把物理网络映射到一个网桥。这个配置需要在 ml2_conf.ini 文件和 ovs_neutron_plugin.ini 文件中进行:

    # openstack-config --set /etc/neutron/plugins/ml2/ml2_conf.ini \
       ovs bridge_mappings PHYSNET:br-INTERFACE
    # openstack-config --set /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini \
       ovs bridge_mappings PHYSNET:br-INTERFACE

    使用物理网络的名称替换 PHYSNET;使用 provisioning 网络接口的名称替换 INTERFACE

  6. 为 Open vSwitch 添加集成的网桥:

    # ovs-vsctl add-br br-int
  7. 创建一个网桥来处理 OpenStack 服务和裸机节点间的通讯,并把网桥映射到网络接口:

    # ovs-vsctl add-br br-INTERFACE
    # ovs-vsctl add-port br-INTERFACE INTERFACE

    使用 provisioning 网络接口的名称替换 INTERFACE

  8. 重启 Open vSwitch agent:

    # systemctl restart neutron-openvswitch-agent.service
  9. 把 shell 设置为以管理用户身份访问 Identity:

    # source ~/keystonerc_admin
  10. 创建扁平化网络来部署裸机实例:

    # neutron net-create --tenant-id TENANT_ID sharednet1 --shared \
       --provider:network_type flat --provider:physical_network PHYSNET

    使用要创建网络的租户的 ID 替换 TENANT_ID;使用物理网络的名称替换 PHYSNET

  11. 在扁平化网络中创建子网:

    # neutron subnet-create sharednet1 NETWORK_CIDR --name SUBNET_NAME \
       --ip-version=4 --gateway=GATEWAY_IP --allocation-pool \
       start=START_IP,end=END_IP --enable-dhcp

    替换以下值:

    • 使用代表子网的 IP 地址段的 CIDR(Classless Inter-Domain Routing)替换 NETWORK_CIDR。由 START_IPEND_IP 指定的 IP 地址范围必须位于由 NETWORK_CIDR 指定的地址段之内。
    • 使用子网的名称替换 SUBNET_NAME
    • 使用作为新子网网关的系统的 IP 地址或主机名替换 GATEWAY_IP。这个地址需要在由 NETWORK_CIDR 指定的地址段之内,并且需要在由 START_IPEND_IP 指定的 IP 地址范围之外。
    • 使用用于分配浮动 IP 地址的新子网的起始 IP 地址替换 START_IP
    • 使用用于分配浮动 IP 地址的新子网的终止 IP 地址替换 END_IP
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部