1.3. 为裸机置备服务配置 Controller 节点
需要将以下步骤以 root
用户身份在 Red Hat OpenStack Platform 部署中的所有控制器节点上执行,但 Create the Bare Metal Provisioning Database 部分除外。您必须在一个控制器上执行该流程,因为它们共享数据库。
在 Controller 节点上,您需要确保裸机置备网络连接到 Open vSwitch,以便 OpenStack 部署可以访问它。
将网桥添加到 Open vSwitch 中:
# ovs-vsctl add-br br-ironic # ovs-vsctl add-port br-ironic IRONIC_PROVISIONING_NIC # ovs-vsctl show
此处
br-ironic
是网桥的名称,IRONIC_PROVISIONING_NIC
是连接到裸机置备网络的 NIC。使用
ovs-vsctl show
命令,您可以看到创建了一个具有关联端口的新网桥,但您会注意到br-int
集成网桥缺少对新网桥的补丁。要获取添加到集成网桥中的新网桥,您需要更新以下插件文件:
更新 ML2 配置文件
/etc/neutron/plugins/ml2/ml2_conf.ini
,如下所示:-
对于
type_drivers
参数,请确保在驱动程序中列出了flat
,例如type_drivers = vxlan,vlan,flat,gre
。这是以逗号分隔的列表。 -
对于
mechanism_drivers
参数,请确保openvswitch
选项列在驱动程序中,例如mechanism_drivers =openvswitch
。这是以逗号分隔的列表。 -
对于
flat_networks
参数,创建一个名称来引用裸机置备网络,如ironicnet
。确保此名称列在列出的flat_networks
中,如flat_networks =datacentre,ironicnet
。这是以逗号分隔的列表。 -
如果您将 VLAN 用于裸机置备网络,请添加
network_vlan_ranges
参数,其格式为:ironicnet:VLAN_START:VLAN_END
,如network_vlan_ranges =datacentre:1:1000
。这是以逗号分隔的列表。 -
enable_security_group
参数应该已经启用。但是,如果没有设置,请将值更改为True
,例如enable_security_group = True
。
-
对于
在
/etc/neutron/plugins/ml2/openvswitch_agent.ini
文件中,找到bridge_mappings
参数并更新如下:bridge_mappings =datacentre:br-ex,ironicnet:br-ironic
此逗号分隔的键值对的值将裸机置备网络的名称映射到连接到网络的物理设备。
重启
neutron-openvswitch-agent.service
,以查看br-ironic
网桥作为集成网桥的一部分:# systemctl restart neutron-openvswitch-agent.service
重启
neutron-server.service
,以便它检测到新连接:# systemctl restart neutron-server.service
注意如果不执行此步骤,尝试在 OpenStack Networking 服务中创建裸机置备网络会失败,并显示请求的扁平网络不存在的消息。
1.3.1. 创建裸机置备数据库
创建裸机置备使用的数据库和数据库用户。此流程中的所有步骤都必须在数据库服务器上执行,同时以 root 用户身份登录。
创建裸机置备数据库
连接到数据库服务:
# mysql -u root
创建 ironic 数据库:
mysql> CREATE DATABASE ironic CHARACTER SET utf8;
创建 ironic 数据库用户,并授予用户 ironic 数据库的访问权限:
mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'%' IDENTIFIED BY 'PASSWORD'; mysql> GRANT ALL PRIVILEGES ON ironic.* TO 'ironic'@'localhost' IDENTIFIED BY 'PASSWORD';
将 PASSWORD 替换为将使用此用户身份与数据库服务器进行身份验证的安全密码。
清除数据库权限以确保它们立即生效:
mysql> FLUSH PRIVILEGES;
退出 mysql 客户端:
mysql> quit
1.3.2. 为裸机置备配置 OpenStack Compute 服务
为裸机置备驱动程序配置 Compute 服务。使用这个驱动程序可让 Compute 使用置备虚拟机的相同 API 置备物理机器。每个 openstack-nova-compute 节点只能指定一个驱动程序;具有裸机置备驱动程序的节点只能置备物理计算机。建议您分配一个 openstack-nova-compute 节点,以使用裸机置备驱动程序置备所有裸机节点。以下流程中的所有步骤都必须在所选计算节点上执行,同时以 root 用户身份登录。
为裸机置备配置 OpenStack Compute
将 Compute 设置为使用裸机置备调度程序主机管理器:
# openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_host_manager nova.scheduler.ironic_host_manager.IronicHostManager
禁止计算调度程序跟踪实例中的更改:
# openstack-config --set /etc/nova/nova.conf DEFAULT scheduler_tracks_instance_changes false
设置默认过滤器,如下所示:
# openstack-config --set /etc/nova/nova.conf DEFAULT baremetal_scheduler_default_filters AvailabilityZoneFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter
将 Compute 设置为使用默认裸机置备调度过滤器:
# openstack-config --set /etc/nova/nova.conf \ DEFAULT scheduler_use_baremetal_filters True
设置 Compute 以为裸机置备使用正确的身份验证详情:
# 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 service # openstack-config --set /etc/nova/nova.conf \ ironic api_endpoint http://IRONIC_API_IP:6385/v1
替换以下值:
- 将 PASSWORD 替换为裸机置备用来与身份进行身份验证的密码。
- 将 IDENTITY_IP 替换为托管身份的服务器的 IP 地址或主机名。
- 将 IRONIC_API_IP 替换为托管裸机置备 API 服务的服务器的 IP 地址或主机名。
在
ironic
Compute 节点上设置nova
数据库凭证:# openstack-config --set /etc/nova/nova.conf database connection "mysql+pymysql://nova:NOVA_DB_PASSWORD@DB_IP/nova"
重启 Compute 控制器节点上的 Compute 调度程序服务:
# systemctl restart openstack-nova-scheduler.service
重启计算节点上的 compute 服务:
# systemctl restart openstack-nova-compute.service
1.3.3. 将 OpenStack 网络 DHCP 代理配置为 Tag iPXE 请求
来自 iPXE 的 OpenStack 网络 DHCP 请求需要有一个名为 ipxe
的 DHCP 标签,以便 DHCP 服务器知道客户端需要执行 HTTP 操作来获取 boot.ipxe
脚本。您可以通过在 OpenStack 网络 DHCP 代理服务使用的 dnsmasq
配置文件中添加 dhcp-userclass
条目来完成此操作。
在 overcloud 控制器上,验证 DHCP 代理使用哪个
dnsmasq
文件:# grep ^dnsmasq_config_file /etc/neutron/dhcp_agent.ini dnsmasq_config_file =/etc/neutron/dnsmasq-neutron.conf
编辑此文件并在文件末尾添加以下行:
# Create the "ipxe" tag if request comes from iPXE user class dhcp-userclass=set:ipxe,iPXE
保存文件并重启 OpenStack Networking DHCP Agent 服务:
# systemctl restart neutron-dhcp-agent.service