Red Hat Training
A Red Hat training course is available for Red Hat OpenStack Platform
spine Leaf Networking
使用 Red Hat OpenStack Platform director 配置路由的初始网络
OpenStack Documentation Team
rhos-docs@redhat.com
摘要
第 1 章 简介
本指南提供有关如何为 Red Hat OpenStack Platform 环境构建预置网络拓扑的信息。这包括端到端的场景和示例文件,以帮助在您自己的环境中复制更广泛的网络拓扑。
1.1. spine-leaf networking
Red Hat OpenStack Platform 的可组合网络架构使您能够将网络适应流行的路由叶型数据中心拓扑。在路由机型的实用应用程序中,叶叶表示为可组合的 Compute 或 Storage 角色,这通常位于数据中心机架中,如 图 1.1 “Route spine-leaf 示例” 所示。Leaf 0 机架具有 undercloud 节点、控制器和计算节点。可组合网络呈现给节点,节点已分配给可组合角色。在这个图表中:
-
StorageLeaf
网络呈现给 Ceph 存储和 Compute 节点。 -
NetworkLeaf
代表您希望构成的任何网络的示例。
图 1.1. Route spine-leaf 示例
1.2. 网络拓扑
路由自叶型裸机环境具有一个或多个第 3 层交换机,交换机在单独的第 2 层广播域中路由隔离 VLAN 之间的流量。
这种设计的目的是根据功能隔离流量。例如,如果控制器节点在内部 API 网络中托管 API,当计算节点访问 API 时,它应使用自己的内部 API 网络版本。要使此路由正常工作,您需要强制为内部 API 网络流量使用所需接口的路由。这可使用 supernet 路由进行配置。例如,如果您使用 172.18.0.0/24
作为控制器节点 的内部 API 网络,您可以将 172.18.1.0/24
用于第二个 内部 API 网络,对第三个内部 API 网络使用 172.1
8.2.0/24,以此类推。因此,您可以有一个指向更大 172.18.0.0/16
supernet 的路由,每个第 2 层域中的每个角色都使用本地 内部 API 网络上的网关 IP。
这种情境使用以下网络:
表 1.1. leaf 0 Networks
Network | 附加角色 | Interface | Bridge | 子网 |
---|---|---|---|---|
置备/Control Plane | All | nic1 | br-ctlplane (undercloud) | 192.168.10.0/24 |
存储 | Controller | nic2 | 172.16.0.0/24 | |
Storage Mgmt | Controller | nic3 | 172.17.0.0/24 | |
内部 API | Controller | nic4 | 172.18.0.0/24 | |
租户 | Controller | nic5 | 172.19.0.0/24 | |
外部 | Controller | nic6 | br-ex | 10.1.1.0/24 |
表 1.2. leaf 1 Networks
Network | 附加角色 | Interface | Bridge | 子网 |
---|---|---|---|---|
置备/Control Plane | All | nic1 | br-ctlplane (undercloud) | 192.168.11.0/24 |
Storage1 | Compute1、Ceph1 | nic2 | 172.16.1.0/24 | |
storage Mgmt1 | Ceph1 | nic3 | 172.17.1.0/24 | |
内部 API1 | Compute1 | nic4 | 172.18.1.0/24 | |
Tenant1 | Compute1 | nic5 | 172.19.1.0/24 |
表 1.3. leaf 2 Networks
Network | 附加角色 | Interface | Bridge | 子网 |
---|---|---|---|---|
置备/Control Plane | All | nic1 | br-ctlplane (undercloud) | 192.168.12.0/24 |
Storage2 | Compute2、Ceph2 | nic2 | 172.16.2.0/24 | |
Storage Mgmt2 | Ceph2 | nic3 | 172.17.2.0/24 | |
内部 API2 | Compute2 | nic4 | 172.18.2.0/24 | |
Tenant2 | Compute2 | nic5 | 172.19.2.0/24 |
表 1.4. Supernet 路由
Network | 子网 |
---|---|
存储 | 172.16.0.0/16 |
Storage Mgmt | 172.17.0.0/16 |
内部 API | 172.18.0.0/16 |
租户 | 172.19.0.0/16 |
1.3. spine-leaf 要求
要在带有第 3 层路由架构的网络上部署 overcloud,您必须满足以下要求:
- 第 3 层路由
- 网络基础架构必须配置了路由,才能启用不同 L-2 网段之间的流量。这可以是静态的,也可以动态配置。
- DHCP-Relay
-
每个不是 undercloud 的本地层2段都必须提供
dhcp-relay
。您必须在连接 undercloud 的 provisioning 网络段上,转发 DHCP 请求到 undercloud。
undercloud 使用两个 DHCP 服务器。一个用于裸机恢复节点内省,另一个用于部署 overcloud 节点。确保读取 DHCP 转发配置,以了解配置 dhcp-relay
时的要求。
1.4. spine-leaf 限制
- 有些角色(如 Controller 角色)使用虚拟 IP 地址和集群。这种功能背后的机制需要在这些节点之间进行第 2 层网络连接。这些节点都放置在同一叶中。
- 类似的限制适用于网络程序节点。网络服务使用虚拟路由器冗余协议(VRRP)在网络中实施高可用性默认路径。由于 VRRP 使用虚拟路由器 IP 地址,您必须将 master 和备份节点连接到同一个 L2 网络段。
- 将租户或提供商网络与 VLAN 分段搭配使用时,您必须在所有网络器和 Compute 节点之间共享特定的 VLAN。
可以使用多组 Networker 节点来配置网络服务。每个网络设置共享路由,VRRP 将在各组网络器节点上提供高度可用的默认路径。在这种配置中,共享网络的所有网络节点必须位于同一 L2 网络段中。
第 2 章 配置 undercloud
本节介绍了如何将 undercloud 配置为适应可组合网络的路由工作范围。
2.1. 配置 spine leaf provisioning 网络
要为 spine leaf 基础架构配置 provisioning 网络,请编辑 undercloud.conf
文件并设置以下步骤中定义的相关参数。
流程
-
以
stack
用户的身份登录 undercloud。 如果您还没有
undercloud.conf
,请复制示例模板文件:[stack@director ~]$ cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
-
编辑
undercloud.conf
。 在
[DEFAULT]
部分中:将
local_ip
设置为leaf0
上的 undercloud IP:local_ip = 192.168.10.1/24
将
undercloud_public_vip
设置为 undercloud 的外 IP 地址:undercloud_public_vip = 10.1.1.1
将
undercloud_admin_vip
设置为 undercloud 的管理 IP 地址。这个 IP 地址通常位于 leaf0 中:undercloud_admin_vip = 192.168.10.2
将
local_interface
设置为为本地网络桥接的接口:local_interface = eth1
将
enable_routed_networks
设置为true
:enable_routed_networks = true
使用
subnets
参数定义子网列表。在路由的 spine 和 leafe 中为每个第 2 层段定义一个子网:subnets = leaf0,leaf1,leaf2
使用
local_subnet
参数指定与物理层 2 段本地关联的子网:local_subnet = leaf0
为每个使用
subnets
参数定义的子网创建一个新部分:[leaf0] cidr = 192.168.10.0/24 dhcp_start = 192.168.10.10 dhcp_end = 192.168.10.90 inspection_iprange = 192.168.10.100,192.168.10.190 gateway = 192.168.10.1 masquerade = False [leaf1] cidr = 192.168.11.0/24 dhcp_start = 192.168.11.10 dhcp_end = 192.168.11.90 inspection_iprange = 192.168.11.100,192.168.11.190 gateway = 192.168.11.1 masquerade = False [leaf2] cidr = 192.168.12.0/24 dhcp_start = 192.168.12.10 dhcp_end = 192.168.12.90 inspection_iprange = 192.168.12.100,192.168.12.190 gateway = 192.168.12.1 masquerade = False
-
保存
undercloud.conf
文件。 运行 undercloud 安装命令:
[stack@director ~]$ openstack undercloud install
这会在 provisioning 网络 / control plane 上创建三个子网。overcloud 使用每个网络来调配各个不同叶内的系统。
为确保正确转发对 undercloud 的 DHCP 请求,您可能需要配置 DHCP 转发。下一节提供了如何配置 DHCP 转发的一些信息。
2.2. 配置 DHCP 转发
undercloud 使用置备网络上的两个 DHCP 服务器:
- 个用于内省。
- 一个用于调配。
配置 DHCP 转发时,请确保将 DHCP 请求转发到 undercloud 上的两个 DHCP 服务器。
您可以将 UDP 广播用于支持它的设备,将 DHCP 请求中继到连接 undercloud 置备网络的 L2 网络段中。或者,也可以使用 UDP 单播,该单播将 DHCP 请求中继到特定的 IP 地址。
在特定设备类型上配置 DHCP 转发不在本课程的讨论范围之内。作为参考,本文档提供了使用 ISC DHCP 软件中的实现的 DHCP 转发配置示例。有关如何使用此实施的详情,请参考 man page dhcrelay (8)。
广播 DHCP 转发
这个方法使用 UDP 广播流量转发 DHCP 请求到 DHCP 服务器所在的 L2 网络网段。网络片段中的所有设备接收广播流量。在使用 UDP 广播时,undercloud 上的 DHCP 服务器都会接收转发的 DHCP 请求。根据实现,这通常通过指定接口或 IP 网络地址来配置:
- Interface
- 指定连接到 DHCP 请求转发的 L2 网络片段的接口。
- IP 网络地址
- 指定 DHCP 请求转发的 IP 网络的网络地址。
单播 DHCP 转发
此方法利用 UDP 单播流量中继到特定 DHCP 服务器的 DHCP 请求。在使用 UDP 单播时,您必须配置提供 DHCP 转发的设备,以将 DHCP 请求中继到分配给分配给 undercloud 上内省的接口的 IP 地址,以及由 OpenStack Networking (neutron)服务创建的网络命名空间的 IP 地址,以托管 ctlplane
网络的 DHCP 服务。
内省的接口是 undercloud.conf
中的 inspection_interface 定义的接口。
通常使用 br-ctlplane
接口进行内省。undercloud.conf
中定义为 local_ip
的 IP 地址位于 br-ctlplane
接口。
分配给 Neutron DHCP 命名空间的 IP 地址是 undercloud.conf 中为 local_subnet 配置的第一个地址。IP 范围中的第一个地址是配置中 dhcp_start
定义的地址。例如:在使用以下配置时,192.168. 10
将是 IP 地址:
[DEFAULT] local_subnet = leaf0 subnets = leaf0,leaf1,leaf2 [leaf0] cidr = 192.168.10.0/24 dhcp_start = 192.168.10.10 dhcp_end = 192.168.10.90 inspection_iprange = 192.168.10.100,192.168.10.190 gateway = 192.168.10.1 masquerade = False
DHCP 命名空间的 IP 地址会自动分配。在大多数情况下,它是 IP 范围中的第一个地址。在 undercloud 上运行以下命令,确保验证情况是这种情况:
$ openstack port list --device-owner network:dhcp -c "Fixed IP Addresses" +----------------------------------------------------------------------------+ | Fixed IP Addresses | +----------------------------------------------------------------------------+ | ip_address='192.168.10.10', subnet_id='7526fbe3-f52a-4b39-a828-ec59f4ed12b2' | +----------------------------------------------------------------------------+ $ openstack subnet show 7526fbe3-f52a-4b39-a828-ec59f4ed12b2 -c name +-------+--------+ | Field | Value | +-------+--------+ | name | leaf0 | +-------+--------+
dhcrelay 配置示例
在以下示例中,dhcp
软件包中的 dhcrelay
命令使用以下配置:
-
转发传入的 DHCP 请求的接口:
eth1、
eth2
和eth3
。 -
在网络段上接口 undercloud DHCP 服务器连接到:
eth0
。 - 用于内省的 DHCP 服务器正在侦听 IP 地址:"192.168.10.1。
-
用于调配的 DHCP 服务器正在侦听 IP 地址
192.168.10.10
。
这会生成以下 dhcrelay
命令:
$ sudo dhcrelay -d --no-pid 172.20.0.10 172.20.0.1 \ -i eth0 -i eth1 -i eth2 -i eth3
Cisco IOS 路由交换机配置示例
这个示例使用以下 Cisco IOS 配置来执行以下任务:
- 配置 VLAN,以用于我们的调配网络。
- 添加 leaf 的 IP 地址。
-
将 UDP 和 BOOTP 请求转发到侦听 IP 地址的内省 DHCP 服务器:192.
168.10.1
. -
将 UDP 和 BOOTP 请求转发到侦听 IP 地址
192.168.10.10
的调配 DHCP 服务器。
interface vlan 2 ip address 192.168.24.254 255.255.255.0 ip helper-address 192.168.10.1 ip helper-address 192.168.10.10 !
现在您已配置了 provisioning 网络,您可以配置剩余的 overcloud leaf 网络。您可以使用一系列配置文件完成此操作。
2.3. 为叶网络创建类别和标记节点
每个 leaf 网络中的每个角色都需要一个类别和角色分配,以便您可以将节点标记为其各自的叶向。此流程演示了如何创建每个类别并将其分配到角色。
流程
Source
stackrc
文件:$ source ~/stackrc
为每个自定义角色创建类别:
$ ROLES="control0 compute_leaf0 compute_leaf1 compute_leaf2 ceph-storage_leaf0 ceph-storage_leaf1 ceph-storage_leaf2" $ for ROLE in $ROLES; do openstack flavor create --id auto --ram 4096 --disk 40 --vcpus 1 $ROLE ; done $ for ROLE in $ROLES; do openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="$ROLE" $ROLE ; done
将节点标记为其对应的 leaf network。例如,运行以下命令,将具有 UUID
58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
的节点标记到 Leaf2 上的计算角色:$ openstack baremetal node set --property capabilities='profile:compute_leaf2,boot_option:local' 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13
创建一个环境文件(
~/templates/node-data.yaml
),其中包含类别到角色的映射:parameter_defaults: OvercloudController0Flavor: control0 Controller0Count: 3 OvercloudCompute0Flavor: compute_leaf0 Compute0Count: 3 OvercloudCompute1Flavor: compute_leaf1 Compute1Count: 3 OvercloudCompute2Flavor: compute_leaf2 Compute2Count: 3 OvercloudCephStorage0Flavor: ceph-storage_leaf0 CephStorage0Count: 3 OvercloudCephStorage1Flavor: ceph-storage_leaf1 CephStorage1Count: 3 OvercloudCephStorage2Flavor: ceph-storage_leaf2 CephStorage2Count: 3
您还可以使用每个对应的 *Count' 参数设置要在 overcloud 中部署的节点数量。
2.4. 将裸机节点端口映射到 control plane 网络片段
要在 L3 路由网络中启用部署,裸机端口必须配置其 physical_network
字段。每个裸机端口都与 OpenStack Bare Metal (ironic)服务的裸机节点关联。物理网络名称是 undercloud 配置中的 子网
选项中使用的名称。
在 undercloud.conf
中指定为 local_subnet
的子网物理网络名称是特殊的。它始终命名为 ctlplane
。
流程
Source
stackrc
文件:$ source ~/stackrc
检查裸机节点:
$ openstack baremetal node list
确保裸机节点是
注册
或manageable
状态。如果裸机节点不在这些状态之一,则用于在 baremetal 端口上设置 physical_network 属性的命令将失败。要将所有节点设置为manageable
状态,请运行以下命令:$ for node in $(openstack baremetal node list -f value -c Name); do openstack baremetal node manage $node --wait; done
检查哪些裸机端口与哪个裸机恢复节点关联。例如:
$ openstack baremetal port list --node <node-uuid>
为端口设置
physical-network
参数。在以下示例中,在配置中定义三个子网:leaf0、
和leaf
1leaf2
。local_subnet 是leaf0
。由于local_subnet
的物理网络始终为ctlplane
,因此连接到leaf0
的 baremetal 端口使用 ctlplane。其余端口使用其他 leaf 名称:$ openstack baremetal port set --physical-network ctlplane <port-uuid> $ openstack baremetal port set --physical-network leaf1 <port-uuid> $ openstack baremetal port set --physical-network leaf2 <port-uuid> $ openstack baremetal port set --physical-network leaf2 <port-uuid>
在部署 overcloud 前,确保节点处于 available 状态:
$ openstack overcloud node provide --all-manageable
第 3 章 备选置备网络方法
本节包含有关将调配网络配置为适应可组合网络路由的准备方法的信息。
3.1. VLAN Provisioning 网络
在本例中,director 通过 provisioning 网络部署新的 overcloud 节点,并在第 3 层拓扑中使用 VLAN 隧道(请参阅 图 3.1 “VLAN 置备网络拓扑”)。这允许 director 的 DHCP 服务器将 DHCPOFFER
广播发送到任何 leaf。要建立此隧道,在 Top-of-Rack (ToR) leaf switch 之间中继 VLAN。在此图中,存储租用
网络会看到 Ceph 存储和 Compute 节点。NetworkLeaf
代表您希望构成的任何网络的示例。
图 3.1. VLAN 置备网络拓扑
3.2. VXLAN 置备网络
在本例中,director 通过 provisioning 网络部署新的 overcloud 节点,并使用 VXLAN 隧道在第 3 层拓扑间跨级别部署(请参阅 图 3.2 “VXLAN 置备网络拓扑”)。这允许 director 的 DHCP 服务器将 DHCPOFFER
广播发送到任何 leaf。要建立此隧道,请在 Top-of-Rack (ToR) leaf switches 上配置 VXLAN 端点。
图 3.2. VXLAN 置备网络拓扑
第 4 章 配置 overcloud
现在,您已配置了 undercloud,您可以配置剩余的 overcloud leaf 网络。您可以使用一系列配置文件完成此操作。之后,您部署 overcloud,生成的部署具有多个可用路由的网络集。
4.1. 创建网络数据文件
要定义 leaf 网络,您可以创建一个网络数据文件,其中包含每个可组合网络及其属性的 YAML 格式列表。默认网络数据位于 undercloud 上,位于 /usr/share/openstack-tripleo-heat-templates/network_data.yaml
。
流程
在
stack
用户的本地目录中创建一个新的network_data_spine_leaf.yaml
文件。使用默认network_data
文件:$ cp /usr/share/openstack-tripleo-heat-templates/network_data.yaml /home/stack/network_data_spine_leaf.yaml
在
network_data_spine_leaf.yaml
文件中,创建一个 YAML 列表,用于将每个网络和 leaf 网络定义为可组合网络项。例如,内部 API 网络及其 leaf 网络使用以下语法定义:# Internal API - name: InternalApi name_lower: internal_api vip: true ip_subnet: '172.18.0.0/24' allocation_pools: [{'start': '172.18.0.4', 'end': '172.18.0.250'}] - name: InternalApi1 name_lower: internal_api1 vip: false ip_subnet: '172.18.1.0/24' allocation_pools: [{'start': '172.18.1.4', 'end': '172.18.1.250'}] - name: InternalApi2 name_lower: internal_api2 vip: false ip_subnet: '172.18.2.0/24' allocation_pools: [{'start': '172.18.2.4', 'end': '172.18.2.250'}]
您不能在网络数据文件中定义 Control Plane 网络,因为 undercloud 已创建这些网络。但是,您需要手动设置参数,以便 overcloud 能够相应地配置其 NIC。
为包含基于 Controller 的服务的网络定义 vip: true
。在本例中,In al
Api 包含这些服务。
有关所有可组合网络的完整示例,请参阅 附录 A, network_data 文件示例。
4.2. 创建角色数据文件
本节演示如何为每个叶定义每个可组合角色,并将可组合的网络附加到每个对应角色。
流程
在
stack
用户本地目录中创建自定义角色
director:$ mkdir ~/roles
将默认 Controller、Compute 和 Ceph Storage 角色从 director 的核心模板集合复制到
~/roles
目录。重命名 Leaf 1 的文件:$ cp /usr/share/openstack-tripleo-heat-templates/roles/Controller.yaml ~/roles/Controller.yaml $ cp /usr/share/openstack-tripleo-heat-templates/roles/Compute.yaml ~/roles/Compute1.yaml $ cp /usr/share/openstack-tripleo-heat-templates/roles/CephStorage.yaml ~/roles/CephStorage1.yaml
编辑
Compute1.yaml
文件:$ vi ~/roles/Compute1.yaml
编辑此文件中
的名称
、网络
和HostnameFormatDefault
参数,以便它们与 Leaf 1 特定参数一致。例如:- name: Compute1 ... networks: - InternalApi1 - Tenant1 - Storage1 HostnameFormatDefault: '%stackname%-compute1-%index%'
保存这个文件。
编辑
CephStorage1.yaml
文件:$ vi ~/roles/CephStorage1.yaml
编辑此文件中的
名称和
网络参数,以便它们与 Leaf 1 特定参数一致。另外,添加
HostnameFormatDefault
参数,再定义 Ceph Storage 节点的 Leaf 1 主机名。例如:- name: CephStorage1 ... networks: - Storage1 - StorageMgmt1 HostnameFormatDefault: '%stackname%-cephstorage1-%index%'
保存这个文件。
复制 Leaf 1 Compute 和 Ceph Storage 文件,作为您的 Leaf 2 和 Leaf 3 文件的基础:
$ cp ~/roles/Compute1.yaml ~/roles/Compute2.yaml $ cp ~/roles/Compute1.yaml ~/roles/Compute3.yaml $ cp ~/roles/CephStorage1.yaml ~/roles/CephStorage2.yaml $ cp ~/roles/CephStorage1.yaml ~/roles/CephStorage3.yaml
编辑 Leaf 2 和 Leaf 3 文件中的
名称
、network 和HostnameFormatDefault
参数,以便它们与对应的 Leaf 网络参数一致。例如,Leaf 2 Compute 文件中的参数具有以下值:
- name: Compute2 ... networks: - InternalApi2 - Tenant2 - Storage2 HostnameFormatDefault: '%stackname%-compute2-%index%'
Leaf 2 Ceph Storage 参数具有以下值:
- name: CephStorage2 ... networks: - Storage2 - StorageMgmt2 HostnameFormatDefault: '%stackname%-cephstorage2-%index%'
当角色就绪时,使用以下命令生成完整角色数据文件:
$ openstack overcloud roles generate --roles-path ~/roles -o roles_data_spine_leaf.yaml Controller Compute1 Compute2 Compute3 CephStorage1 CephStorage2 CephStorage3
这会创建一个完整的
roles_data_spine_leaf.yaml
文件,其中包含每个对应 leaf 网络的所有自定义角色。
有关此文件的完整示例,请参阅 附录 C, roles_data 文件示例。
每个角色都有自己的 NIC 配置。在配置 spine-leaf 配置前,您需要创建一个基础 NIC 模板集来适合您的当前的 NIC 配置。
4.3. 创建自定义 NIC 配置
每个角色都需要自己的 NIC 配置。创建 NIC 模板的基本集合副本,并进行修改以适合您的当前的 NIC 配置。
流程
进入核心 Heat 模板目录:
$ cd /usr/share/openstack-tripleo-heat-templates
使用
tools/process-templates.py
脚本、自定义network_data
文件和自定义roles_data
文件呈现 Jinja2 模板:$ tools/process-templates.py -n /home/stack/network_data_spine_leaf.yaml \ -r /home/stack/roles_data_spine_leaf.yaml \ -o /home/stack/openstack-tripleo-heat-templates-spine-leaf
进入主目录:
$ cd /home/stack
复制其中一个默认 NIC 模板的内容,以用作自旋模板的基础。例如,复制
single-nic-vlans
:$ cp -r openstack-tripleo-heat-templates-spine-leaf/network/config/single-nic-vlans/* \ /home/stack/templates/spine-leaf-nics/.
删除渲染的模板目录:
$ rm -rf openstack-tripleo-heat-templates-spine-leaf
Resources
- 如需有关 自定义 NIC 模板 的更多信息,请参阅高级 Overcloud 自定义指南中的 "自定义网络接口模板"。
4.4. 编辑自定义 Controller NIC 配置
渲染的模板包含大部分内容,这是适合 spine-leaf 配置所需的大部分内容。但是,需要一些额外的配置更改。按照以下步骤修改 Leaf0 上 Controller 节点的 YAML 结构。
流程
进入您的自定义 NIC 目录:
$ cd ~/templates/spine-leaf-nics/
-
编辑
controller0.yaml
的模板。 滚动到
parameters
部分中的ControlPlaneSubnetCidr
和ControlPlaneDefaultRoute
参数。这些参数类似于以下片断:ControlPlaneSubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlaneDefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
修改这些参数以适合 Leaf0:
ControlPlane0SubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlane0DefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
滚动到
parameters
部分中的EC2MetadataIp
参数。这个参数类似以下片断:EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
修改此参数以适合 Leaf0:
Leaf0EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
滚动到网络配置部分。本节类似以下示例:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: ../../scripts/run-os-net-config.sh params: $network_config: network_config:
将脚本的位置改为绝对路径:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh params: $network_config: network_config:
在
network_config
部分,定义 control plane / provisioning 接口。例如:network_config: - type: ovs_bridge name: bridge_name use_dhcp: false dns_servers: get_param: DnsServers addresses: - ip_netmask: list_join: - / - - get_param: ControlPlaneIp - get_param: ControlPlane0SubnetCidr routes: - ip_netmask: 169.254.169.254/32 next_hop: get_param: Leaf0EC2MetadataIp - ip_netmask: 192.168.10.0/24 next_hop: get_param: ControlPlane0DefaultRoute
请注意,本例中使用的参数特定于 Leaf0:
ControlPlane0SubnetCidr
、Leaf0EC2MetadataIp
和ControlPlane0DefaultRoute
。还请注意,在 provisioning 网络(192.168.10.0/24)上用于 Leaf0 的 CIDR,它用作路由。members
部分中的每个 VLAN 包含相关的 Leaf0 参数。例如,存储网络 VLAN 信息应类似于以下代码片段:- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet
添加一个部分来为路由定义参数。这包括 supernet 路由(本例中为
StorageSupernet
)和 leaf default 路由(本例中为Storage0InterfaceDefaultRoute
):- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet routes: - ip_netmask: get_param: StorageSupernet next_hop: get_param: Storage0InterfaceDefaultRoute
为以下 Controller 网络添加 VLAN 结构的路由:
存储
、StorageMgmt
、InternalApi
和Tenant
。- 保存这个文件。
4.5. 创建自定义 Compute NIC 配置
此流程为 Leaf0 Leaf1 和 Leaf2 上的 Compute 节点创建 YAML 结构。
流程
进入您的自定义 NIC 目录:
$ cd ~/templates/spine-leaf-nics/
-
编辑
compute0.yaml
的模板。 滚动到
parameters
部分中的ControlPlaneSubnetCidr
和ControlPlaneDefaultRoute
参数。这些参数类似于以下片断:ControlPlaneSubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlaneDefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
修改这些参数以适合 Leaf0:
ControlPlane0SubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlane0DefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
滚动到
parameters
部分中的EC2MetadataIp
参数。这个参数类似以下片断:EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
修改此参数以适合 Leaf0:
Leaf0EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
滚动到网络配置部分。本节类似以下片断:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: ../../scripts/run-os-net-config.sh params: $network_config: network_config:
将脚本的位置改为绝对路径:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh params: $network_config: network_config:
在
network_config
部分,定义 control plane / provisioning 接口。例如:network_config: - type: interface name: nic1 use_dhcp: false dns_servers: get_param: DnsServers addresses: - ip_netmask: list_join: - / - - get_param: ControlPlaneIp - get_param: ControlPlane0SubnetCidr routes: - ip_netmask: 169.254.169.254/32 next_hop: get_param: Leaf0EC2MetadataIp - ip_netmask: 192.168.10.0/24 next_hop: get_param: ControlPlane0DefaultRoute
请注意,本例中使用的参数特定于 Leaf0:
ControlPlane0SubnetCidr
、Leaf0EC2MetadataIp
和ControlPlane0DefaultRoute
。还请注意,在 provisioning 网络(192.168.10.0/24)上用于 Leaf0 的 CIDR,它用作路由。members
部分中的每个 VLAN 应包含相关的 Leaf0 参数。例如,存储网络 VLAN 信息应类似于以下代码片段:- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet
添加一个部分来为路由定义参数。这包括 supernet 路由(本例中为
StorageSupernet
)和 leaf default 路由(本例中为Storage0InterfaceDefaultRoute
):- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet routes: - ip_netmask: get_param: StorageSupernet next_hop: get_param: Storage0InterfaceDefaultRoute
为以下控制器网络添加 VLAN 结构:
存储
、InternalApi
和Tenant
。- 保存这个文件。
编辑
compute1.yaml
并执行相同的步骤。以下是更改列表:-
将
ControlPlaneSubnetCidr
更改为ControlPlane1SubnetCidr
。 -
将
ControlPlaneDefaultRoute
更改为ControlPlane1DefaultRoute
。 -
将
EC2MetadataIp
更改为Leaf1EC2MetadataIp
。 -
将网络配置脚本从 ../.
/scripts/run-os-net-config.sh
改为/usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
。 - 修改 control plane / provisioning 接口以使用 Leaf1 参数。
- 修改每个 VLAN,使其包含 Leaf1 路由。
完成后保存这个文件。
-
将
编辑
compute2.yaml
并执行相同的步骤。以下是更改列表:-
将
ControlPlaneSubnetCidr
更改为ControlPlane2SubnetCidr
。 -
将
ControlPlaneDefaultRoute
更改为ControlPlane2DefaultRoute
。 -
将
EC2MetadataIp
更改为Leaf2EC2MetadataIp
。 -
将网络配置脚本从 ../.
/scripts/run-os-net-config.sh
改为/usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
。 - 修改 control plane / provisioning 接口,以使用 Leaf2 参数。
- 修改每个 VLAN,使其包含 Leaf2 路由。
完成后保存这个文件。
-
将
4.6. 创建自定义 Ceph Storage NIC 配置
此流程为 Leaf0 Leaf1 和 Leaf2 上的 Ceph Storage 节点创建 YAML 结构。
流程
进入您的自定义 NIC 目录:
$ cd ~/templates/spine-leaf-nics/
滚动到
parameters
部分中的ControlPlaneSubnetCidr
和ControlPlaneDefaultRoute
参数。这些参数类似于以下片断:ControlPlaneSubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlaneDefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
修改这些参数以适合 Leaf0:
ControlPlane0SubnetCidr: # Override this via parameter_defaults default: '24' description: The subnet CIDR of the control plane network. type: string ControlPlane0DefaultRoute: # Override this via parameter_defaults description: The default route of the control plane network. type: string
滚动到
parameters
部分中的EC2MetadataIp
参数。这个参数类似以下片断:EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
修改此参数以适合 Leaf0:
Leaf0EC2MetadataIp: # Override this via parameter_defaults description: The IP address of the EC2 metadata server. type: string
滚动到网络配置部分。本节类似以下片断:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: ../../scripts/run-os-net-config.sh params: $network_config: network_config:
将脚本的位置改为绝对路径:
resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh params: $network_config: network_config:
在
network_config
部分,定义 control plane / provisioning 接口。例如:network_config: - type: interface name: nic1 use_dhcp: false dns_servers: get_param: DnsServers addresses: - ip_netmask: list_join: - / - - get_param: ControlPlaneIp - get_param: ControlPlane0SubnetCidr routes: - ip_netmask: 169.254.169.254/32 next_hop: get_param: Leaf0EC2MetadataIp - ip_netmask: 192.168.10.0/24 next_hop: get_param: ControlPlane0DefaultRoute
请注意,本例中使用的参数特定于 Leaf0:
ControlPlane0SubnetCidr
、Leaf0EC2MetadataIp
和ControlPlane0DefaultRoute
。还请注意,在 provisioning 网络(192.168.10.0/24)上用于 Leaf0 的 CIDR,它用作路由。members
部分中的每个 VLAN 都包含相关的 Leaf0 参数。例如,存储网络 VLAN 信息应类似于以下代码片段:- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet
添加一个部分来为路由定义参数。这包括 supernet 路由(本例中为
StorageSupernet
)和 leaf default 路由(本例中为Storage0InterfaceDefaultRoute
):- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet routes: - ip_netmask: get_param: StorageSupernet next_hop: get_param: Storage0InterfaceDefaultRoute
为以下 Controller 网络添加 VLAN 结构:
存储
、StorageMgmt
。- 保存这个文件。
编辑
ceph-storage1.yaml
并执行相同的步骤。以下是更改列表:-
将
ControlPlaneSubnetCidr
更改为ControlPlane1SubnetCidr
。 -
将
ControlPlaneDefaultRoute
更改为ControlPlane1DefaultRoute
。 -
将
EC2MetadataIp
更改为Leaf1EC2MetadataIp
。 -
将网络配置脚本从 ../.
/scripts/run-os-net-config.sh
改为/usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
。 - 修改 control plane / provisioning 接口,以使用 Leaf1 参数。
- 修改每个 VLAN,使其包含 Leaf1 路由。
完成后保存这个文件。
-
将
编辑
ceph-storage2.yaml
并执行相同的步骤。以下是更改列表:-
将
ControlPlaneSubnetCidr
更改为ControlPlane2SubnetCidr
。 -
将
ControlPlaneDefaultRoute
更改为ControlPlane2DefaultRoute
。 -
将
EC2MetadataIp
更改为Leaf2EC2MetadataIp
。 -
将网络配置脚本从 ../.
/scripts/run-os-net-config.sh
改为/usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh
。 - 修改 control plane / provisioning 接口,以使用 Leaf2 参数。
- 修改每个 VLAN,使其包含 Leaf2 路由。
完成后保存这个文件。
-
将
4.7. 创建网络环境文件
这个过程创建了基本网络环境文件,供以后使用。
流程
-
在 stack 用户的
templates
目录中创建network-environment.yaml
文件。 在环境文件中添加以下部分:
resource_registry: parameter_defaults:
注意以下几点:
-
resource_registry
会将网络资源映射到对应的 NIC 模板。 -
parameter_defaults
将定义与配置相关的其他网络参数。
-
接下来的几个部分将详细信息添加到您的网络环境文件,以配置 spine leaf 架构的某些方面。完成后,您可以使用 openstack overcloud deploy
命令包含此文件。
4.8. 将网络资源映射到 NIC 模板
此流程将网络配置的相关资源映射到对应的 NIC 模板。
流程
-
编辑
network-environment.yaml
文件。 将资源映射添加到您的
resource_registry
。资源名称采用以下格式:OS::TripleO::[ROLE]::Net::SoftwareConfig: [NIC TEMPLATE]
对于本指南的场景,
resource_registry
包含以下资源映射:resource_registry: OS::TripleO::Controller0::Net::SoftwareConfig: ./spine-leaf-nics/controller0.yaml OS::TripleO::Compute0::Net::SoftwareConfig: ./spine-leaf-nics/compute0.yaml OS::TripleO::Compute1::Net::SoftwareConfig: ./spine-leaf-nics/compute1.yaml OS::TripleO::Compute2::Net::SoftwareConfig: ./spine-leaf-nics/compute2.yaml OS::TripleO::CephStorage0::Net::SoftwareConfig: ./spine-leaf-nics/cephstorage0.yaml OS::TripleO::CephStorage1::Net::SoftwareConfig: ./spine-leaf-nics/cephstorage1.yaml OS::TripleO::CephStorage2::Net::SoftwareConfig: ./spine-leaf-nics/cephstorage2.yaml
-
保存
network-environment.yaml
文件。
4.9. spine leaf 路由
每个角色都需要在每个隔离的网络上路由,指向用于相同功能的其他子网。因此,当 Compute1 节点与 InternalApi
VIP 上的控制器联系时,流量应该通过
网关为目标。因此,从控制器返回到 InternalApi1
InternalApi1
网络的流量应该经过 InternalApi
网络网关。
supernet 路由应用到每个角色上的所有隔离网络,以避免通过默认网关发送流量,默认为非控制器上的 Control Plane 网络,以及控制器上的 外部网络。
您需要在隔离的网络上配置这些路由,因为 Red Hat Enterprise Linux 默认在入站流量上实施严格的反向路径过滤。如果 API 正在侦听 内部 API 接口,并且请求进入该 API,则仅当返回路径路由位于 内部 API 接口时,它才会接受请求。如果服务器正在侦听 内部 API 网络,但客户端的返回路径是通过 Control Plane,则服务器会因为反向路径过滤器而丢弃请求。
下图显示了通过 control plane 路由流量,这将无法成功。从路由器返回到控制器节点的返回路由与 VIP 正在侦听的接口不匹配,因此数据包会被丢弃。192.168.24.0/24
直接连接到控制器,因此被视为对 Control Plane 网络的本地。
图 4.1. 通过 Control Plane 路由流量
为了进行比较,示意图显示了通过内部 API 网络运行的路由:
图 4.2. 通过内部 API 路由流量
4.10. 为可组合网络分配路由
此流程定义叶型网络的路由。
流程
-
编辑
network-environment.yaml
文件。 将 supernet 路由参数添加到
parameter_defaults
部分。每个隔离的网络都应该应用一个 supernet 路由。例如:parameter_defaults: StorageSupernet: 172.16.0.0/16 StorageMgmtSupernet: 172.17.0.0/16 InternalApiSupernet: 172.18.0.0/16 TenantSupernet: 172.19.0.0/16
注意网络接口模板应包含每个网络的 supernet 参数。例如:
- type: vlan vlan_id: get_param: Storage0NetworkVlanID addresses: - ip_netmask: get_param: Storage0IpSubnet routes: - ip_netmask: get_param: StorageSupernet next_hop: get_param: Storage0InterfaceDefaultRoute
将
ServiceNetMap HostnameResolveNetwork
参数添加到parameter_defaults
部分,为该部分提供叶有主机名列表,用于解析其他 leaf 节点。例如:parameter_defaults: ... ServiceNetMap: Compute1HostnameResolveNetwork: internal_api1 Compute2HostnameResolveNetwork: internal_api2 Compute3HostnameResolveNetwork: internal_api3 CephStorage1HostnameResolveNetwork: storage1 CephStorage2HostnameResolveNetwork: storage2 CephStorage3HostnameResolveNetwork: storage3
Compute 节点使用 leaf's 内部 API 网络和 Ceph Storage 节点使用leaf 的 Storage 网络。
将以下
ExtraConfig
设置添加到parameter_defaults
部分,以解决计算和 Ceph Storage 节点上特定组件的路由:表 4.1. compute
ExtraConfig
参数参数 设置为该值 nova::compute::libvirt::vncserver_listen
VNC 服务器侦听的 IP 地址。
nova::compute::vncserver_proxyclient_address
运行 VNC 代理客户端的服务器 IP 地址。
neutron::agents::ml2::ovs::local_ip
OpenStack Networking (neutron)隧道端点的 IP 地址。
cold_migration_ssh_inbound_addr
用于冷迁移 SSH 连接的本地 IP 地址。
live_migration_ssh_inbound_addr
用于实时迁移 SSH 连接的本地 IP 地址。
nova::migration::libvirt::live_migration_inbound_addr
用于实时迁移流量的 IP 地址。
注意如果使用 SSL/TLS,请将网络名称加上 "fqdn_" 的前面,以确保根据 FQDN 检查证书。
nova::my_ip
主机上计算(nova)服务的 IP 地址。
tripleo::profile::base::database::mysql::client::mysql_client_bind_address
数据库客户端的 IP 地址。在本例中,它是 Compute 节点上的
mysql
客户端。表 4.2.
CephAnsibleExtraConfig
参数参数 设置为该值 public_network
包含 Ceph 节点(每个叶一个)的所有存储网络的逗号分隔列表,如 172.16.0.0/24,172.16.1.0/24,172.16.2.0/24
cluster_network
包含 Ceph 节点的存储管理网络(每个叶一个)的逗号分隔列表,例如 172.17.0.0/24,172.17.1.0/24,172.17.2.0/24,172.17.2.0/24
例如:
parameter_defaults: ... Compute1ExtraConfig: nova::compute::libvirt::vncserver_listen: "%{hiera('internal_api1')}" nova::compute::vncserver_proxyclient_address: "%{hiera('internal_api1')}" neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant1')}" cold_migration_ssh_inbound_addr: "%{hiera('internal_api1')}" live_migration_ssh_inbound_addr: "%{hiera('internal_api1')}" nova::migration::libvirt::live_migration_inbound_addr: "%{hiera('internal_api1')}" nova::my_ip: "%{hiera('internal_api1')}" tripleo::profile::base::database::mysql::client::mysql_client_bind_address: "%{hiera('internal_api1')}" Compute2ExtraConfig: nova::compute::libvirt::vncserver_listen: "%{hiera('internal_api2')}" nova::compute::vncserver_proxyclient_address: "%{hiera('internal_api2')}" neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant2')}" cold_migration_ssh_inbound_addr: "%{hiera('internal_api2')}" live_migration_ssh_inbound_addr: "%{hiera('internal_api2')}" nova::migration::libvirt::live_migration_inbound_addr: "%{hiera('internal_api2')}" nova::my_ip: "%{hiera('internal_api2')}" tripleo::profile::base::database::mysql::client::mysql_client_bind_address: "%{hiera('internal_api2')}" Compute3ExtraConfig: nova::compute::libvirt::vncserver_listen: "%{hiera('internal_api3')}" nova::compute::vncserver_proxyclient_address: "%{hiera('internal_api3')}" neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant3')}" cold_migration_ssh_inbound_addr: "%{hiera('internal_api3')}" live_migration_ssh_inbound_addr: "%{hiera('internal_api3')}" nova::migration::libvirt::live_migration_inbound_addr: "%{hiera('internal_api3')}" nova::my_ip: "%{hiera('internal_api3')}" tripleo::profile::base::database::mysql::client::mysql_client_bind_address: "%{hiera('internal_api3')}" CephAnsibleExtraConfig: public_network: '172.16.0.0/24,172.16.1.0/24,172.16.2.0/24' cluster_network: '172.17.0.0/24,172.17.1.0/24,172.17.2.0/24'
4.11. 设置 control plane 参数
您通常使用 network_data
文件为隔离自叶网络定义网络详情。例外是 undercloud 创建的 control plane 网络。但是,overcloud 需要访问每个分支的 control plane。这需要一些额外的参数,这些参数在 network-environment.yaml
文件中定义。例如,以下代码片段来自 Leaf0 上 Controller 角色的 NIC 模板
- type: interface name: nic1 use_dhcp: false dns_servers: get_param: DnsServers addresses: - ip_netmask: list_join: - / - - get_param: ControlPlaneIp - get_param: ControlPlane0SubnetCidr routes: - ip_netmask: 169.254.169.254/32 next_hop: get_param: Leaf0EC2MetadataIp - ip_netmask: 192.168.10.0/24 next_hop: get_param: ControlPlane0DefaultRoute
在本例中,我们需要为 Leaf 0 上的对应 Control Plane 网络定义 IP、子网、元数据 IP 和默认路由。
流程
-
编辑
network-environment.yaml
文件。 在
parameter_defaults
部分中:将映射添加到主 control plane 子网:
parameter_defaults: ... ControlPlaneSubnet: leaf0
为每个 spine-leaf 网络添加 control plane 子网映射:
parameter_defaults: ... Controller0ControlPlaneSubnet: leaf0 Compute0ControlPlaneSubnet: leaf0 Compute1ControlPlaneSubnet: leaf1 Compute2ControlPlaneSubnet: leaf2 CephStorage0ControlPlaneSubnet: leaf0 CephStorage1ControlPlaneSubnet: leaf1 CephStorage2ControlPlaneSubnet: leaf2
为每个 leaf 添加 control plane 路由:
parameter_defaults: ... ControlPlane0DefaultRoute: 192.168.10.1 ControlPlane0SubnetCidr: '24' ControlPlane1DefaultRoute: 192.168.11.1 ControlPlane1SubnetCidr: '24' ControlPlane2DefaultRoute: 192.168.12.1 ControlPlane2SubnetCidr: '24'
默认路由参数通常是为每个置备子网的网关设置的 IP 地址。
如需更多信息,请参阅
undercloud.conf
文件。为 EC2 元数据 IP 添加参数:
parameter_defaults: ... Leaf0EC2MetadataIp: 192.168.10.1 Leaf1EC2MetadataIp: 192.168.11.1 Leaf2EC2MetadataIp: 192.168.12.1
它们作为 EC2 元数据服务的 control plane (169.254.169.254/32)的路由,您应该在 provisioning 网络中的每个叶都设置为对应的
网关
。
-
保存
network-environment.yaml
文件。
4.12. 部署 spine-leaf enabled overcloud
现在,我们的所有文件均为我们的部署做好准备。本节提供了每个文件和部署命令的回顾:
流程
检查
/home/stack/template/network_data_spine_leaf.yaml
文件,并确保该文件包含每个 leaf 的每个网络。注意目前没有为网络子网和
allocation_pools
值执行验证。请确定您一致地定义这些,并且现有网络不会有冲突。-
检查
~/templates/spine-leaf-nics/
中包含的 NIC 模板,并确保每个叶上每个角色的接口已正确定义。 -
检查
network-environment.yaml
环境文件,并确保它包含不超出网络数据文件控制的所有自定义参数。这包括引用每个角色的自定义 NIC 模板的路由、control plane 参数和resource_registry
部分。 -
检查
/home/stack/templates/roles_data_spine_leaf.yaml
值,并确保为每个叶都定义了角色。 - 检查 '/home/stack/templates/nodes_data.yaml 文件,确保所有角色都具有分配的类别和节点数。也请检查每个 leaf 的所有节点都已正确标记。
运行
openstack overcloud deploy
命令,以应用 spine leaf 配置。例如:openstack overcloud deploy --templates \ -n /home/stack/template/network_data_spine_leaf.yaml \ -r /home/stack/templates/roles_data_spine_leaf.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e /home/stack/templates/network-environment.yaml \ -e /home/stack/templates/nodes_data.yaml \ -e [OTHER ENVIRONMENT FILES]
-
network-isolation.yaml
是同一位置(network-isolation.j2.yaml
)中的 Jinja2 文件内容。包含此文件,以确保 director 将每个网络与其正确的树叶隔离开来。这可确保在 overcloud 创建过程中动态创建网络。 -
在
network-isolation.yaml
和其他基于网络的环境文件后面包括network-environment.yaml
文件。这样可确保network-environment.yaml
中定义的任何参数和资源覆盖之前在其他环境文件中定义的相同的参数和资源。 - 添加额外的环境文件。例如,包含容器镜像位置或 Ceph 集群配置的环境文件。
-
- 等待 spine-leaf enabled overcloud 部署完毕。
附录 A. network_data 文件示例
# Storage - name: Storage vip: true name_lower: storage ip_subnet: '172.16.0.0/24' allocation_pools: [{'start': '172.16.0.4', 'end': '172.16.0.250'}] - name: Storage1 vip: false name_lower: storage1 ip_subnet: '172.16.1.0/24' allocation_pools: [{'start': '172.16.1.4', 'end': '172.16.1.250'}] - name: Storage2 vip: false name_lower: storage2 ip_subnet: '172.16.2.0/24' allocation_pools: [{'start': '172.16.2.4', 'end': '172.16.2.250'}] # StorageMgmt - name: StorageMgmt name_lower: storage_mgmt vip: true ip_subnet: '172.17.0.0/24' allocation_pools: [{'start': '172.17.0.0', 'end': '172.17.0.250'}] - name: StorageMgmt1 name_lower: storage_mgmt1 vip: false ip_subnet: '172.17.1.0/24' allocation_pools: [{'start': '172.17.1.4', 'end': '172.17.1.250'}] - name: StorageMgmt2 name_lower: storage_mgmt2 vip: false ip_subnet: '172.17.2.0/24' allocation_pools: [{'start': '172.17.2.4', 'end': '172.17.2.250'}] # Internal API - name: InternalApi name_lower: internal_api vip: true ip_subnet: '172.18.0.0/24' allocation_pools: [{'start': '172.18.0.4', 'end': '172.18.0.250'}] - name: InternalApi1 name_lower: internal_api1 vip: false ip_subnet: '172.18.1.0/24' allocation_pools: [{'start': '172.18.1.4', 'end': '172.18.1.250'}] - name: InternalApi2 name_lower: internal_api2 vip: false ip_subnet: '172.18.2.0/24' allocation_pools: [{'start': '172.18.2.4', 'end': '172.18.2.250'}] # Tenant - name: Tenant vip: false # Tenant network does not use VIPs name_lower: tenant ip_subnet: '172.19.0.0/24' allocation_pools: [{'start': '172.19.0.4', 'end': '172.19.0.250'}] - name: Tenant1 vip: false # Tenant network does not use VIPs name_lower: tenant1 ip_subnet: '172.19.1.0/24' allocation_pools: [{'start': '172.19.1.4', 'end': '172.19.1.250'}] - name: Tenant2 vip: false # Tenant network does not use VIPs name_lower: tenant2 ip_subnet: '172.19.2.0/24' allocation_pools: [{'start': '172.19.2.4', 'end': '172.19.2.250'}] - name: External vip: true name_lower: external ip_subnet: '10.0.0.0/24' allocation_pools: [{'start': '10.0.0.4', 'end': '10.0.0.250'}] gateway_ip: '10.0.0.1'
附录 B. 自定义 NIC 模板
以下是一个模板,供您开始使用为 spine leaf 网络配置网络接口模板。请注意,resource
部分不完整,需要您的接口定义。
heat_template_version: queens parameters: # Supernets StorageSupernet: type: string StorageMgmtSupernet: type: string InternalApiSupernet: type: string TenantSupernet: type: string ExternalSupernet: type: string # Default Routes ControlPlane0DefaultRoute: type: string ControlPlane1DefaultRoute: type: string ControlPlane2DefaultRoute: type: string StorageInterfaceDefaultRoute: type: string Storage1InterfaceDefaultRoute: type: string Storage2InterfaceDefaultRoute: type: string StorageMgmtInterfaceDefaultRoute: type: string StorageMgmt1InterfaceDefaultRoute: type: string StorageMgmt2InterfaceDefaultRoute: type: string InternalApiInterfaceDefaultRoute: type: string InternalApi1InterfaceDefaultRoute: type: string InternalApi2InterfaceDefaultRoute: type: string TenantInterfaceDefaultRoute: type: string Tenant1InterfaceDefaultRoute: type: string Tenant2InterfaceDefaultRoute: type: string ExternalInterfaceDefaultRoute: type: string # IP subnets StorageIpSubnet: default: '' type: string Storage1IpSubnet: default: '' type: string Storage2IpSubnet: default: '' type: string StorageMgmtIpSubnet: default: '' type: string StorageMgmt1IpSubnet: default: '' type: string StorageMgmt2IpSubnet: default: '' type: string InternalApiIpSubnet: default: '' type: string InternalApi1IpSubnet: default: '' type: string InternalApi2IpSubnet: default: '' type: string TenantIpSubnet: default: '' type: string Tenant1IpSubnet: default: '' type: string Tenant2IpSubnet: default: '' type: string ExternalIpSubnet: default: '' type: string ManagementIpSubnet: default: '' type: string # VLAN IDs StorageNetworkVlanID: type: number Storage1NetworkVlanID: type: number Storage2NetworkVlanID: type: number StorageMgmtNetworkVlanID: type: number StorageMgmt1NetworkVlanID: type: number StorageMgmt2NetworkVlanID: type: number InternalApiNetworkVlanID: type: number InternalApi1NetworkVlanID: type: number InternalApi1NetworkVlanID: type: number TenantNetworkVlanID: type: number Tenant1NetworkVlanID: type: number Tenant2NetworkVlanID: type: number ExternalNetworkVlanID: type: number ManagementNetworkVlanID: type: number # Subnet CIDR ControlPlane0SubnetCidr: type: string ControlPlane1SubnetCidr: type: string ControlPlane1SubnetCidr: type: string ControlPlaneIp: type: string DnsServers: type: comma_delimited_list # EC2 metadata server IPs Leaf0EC2MetadataIp: type: string Leaf1EC2MetadataIp: type: string Leaf2EC2MetadataIp: type: string resources: OsNetConfigImpl: type: OS::Heat::SoftwareConfig properties: group: script config: str_replace: template: get_file: /usr/share/openstack-tripleo-heat-templates/network/scripts/run-os-net-config.sh params: $network_config: network_config: [NETWORK CONFIG HERE] outputs: OS::stack_id: description: The OsNetConfigImpl resource. value: get_resource: OsNetConfigImpl
附录 C. roles_data 文件示例
############################################################################### # Role: Controller0 # ############################################################################### - name: Controller0 description: | Controller role that has all the controler services loaded and handles Database, Messaging and Network functions. CountDefault: 1 tags: - primary - controller networks: - External - InternalApi - Storage - StorageMgmt - Tenant default_route_networks: ['External'] HostnameFormatDefault: '%stackname%-controller0-%index%' uses_deprecated_params: True deprecated_param_extraconfig: 'controllerExtraConfig' deprecated_param_flavor: 'OvercloudControlFlavor' deprecated_param_image: 'controllerImage' deprecated_nic_config_name: 'controller.yaml' ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AodhApi - OS::TripleO::Services::AodhEvaluator - OS::TripleO::Services::AodhListener - OS::TripleO::Services::AodhNotifier - OS::TripleO::Services::AuditD - OS::TripleO::Services::BarbicanApi - OS::TripleO::Services::BarbicanBackendSimpleCrypto - OS::TripleO::Services::BarbicanBackendDogtag - OS::TripleO::Services::BarbicanBackendKmip - OS::TripleO::Services::BarbicanBackendPkcs11Crypto - OS::TripleO::Services::CACerts - OS::TripleO::Services::CeilometerApi - OS::TripleO::Services::CeilometerCollector - OS::TripleO::Services::CeilometerExpirer - OS::TripleO::Services::CeilometerAgentCentral - OS::TripleO::Services::CeilometerAgentNotification - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CephMds - OS::TripleO::Services::CephMgr - OS::TripleO::Services::CephMon - OS::TripleO::Services::CephRbdMirror - OS::TripleO::Services::CephRgw - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::CinderApi - OS::TripleO::Services::CinderBackendDellPs - OS::TripleO::Services::CinderBackendDellSc - OS::TripleO::Services::CinderBackendDellEMCUnity - OS::TripleO::Services::CinderBackendDellEMCVMAXISCSI - OS::TripleO::Services::CinderBackendDellEMCVNX - OS::TripleO::Services::CinderBackendDellEMCXTREMIOISCSI - OS::TripleO::Services::CinderBackendNetApp - OS::TripleO::Services::CinderBackendScaleIO - OS::TripleO::Services::CinderBackendVRTSHyperScale - OS::TripleO::Services::CinderBackup - OS::TripleO::Services::CinderHPELeftHandISCSI - OS::TripleO::Services::CinderScheduler - OS::TripleO::Services::CinderVolume - OS::TripleO::Services::Clustercheck - OS::TripleO::Services::Collectd - OS::TripleO::Services::Congress - OS::TripleO::Services::Docker - OS::TripleO::Services::Ec2Api - OS::TripleO::Services::Etcd - OS::TripleO::Services::ExternalSwiftProxy - OS::TripleO::Services::Fluentd - OS::TripleO::Services::GlanceApi - OS::TripleO::Services::GlanceRegistry - OS::TripleO::Services::GnocchiApi - OS::TripleO::Services::GnocchiMetricd - OS::TripleO::Services::GnocchiStatsd - OS::TripleO::Services::HAproxy - OS::TripleO::Services::HeatApi - OS::TripleO::Services::HeatApiCloudwatch - OS::TripleO::Services::HeatApiCfn - OS::TripleO::Services::HeatEngine - OS::TripleO::Services::Horizon - OS::TripleO::Services::Ipsec - OS::TripleO::Services::IronicApi - OS::TripleO::Services::IronicConductor - OS::TripleO::Services::IronicPxe - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Keepalived - OS::TripleO::Services::Kernel - OS::TripleO::Services::Keystone - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::ManilaApi - OS::TripleO::Services::ManilaBackendCephFs - OS::TripleO::Services::ManilaBackendIsilon - OS::TripleO::Services::ManilaBackendNetapp - OS::TripleO::Services::ManilaBackendUnity - OS::TripleO::Services::ManilaBackendVNX - OS::TripleO::Services::ManilaBackendVMAX - OS::TripleO::Services::ManilaScheduler - OS::TripleO::Services::ManilaShare - OS::TripleO::Services::Memcached - OS::TripleO::Services::MistralApi - OS::TripleO::Services::MistralEngine - OS::TripleO::Services::MistralExecutor - OS::TripleO::Services::MistralEventEngine - OS::TripleO::Services::MongoDb - OS::TripleO::Services::MySQL - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronApi - OS::TripleO::Services::NeutronBgpVpnApi - OS::TripleO::Services::NeutronSfcApi - OS::TripleO::Services::NeutronCorePlugin - OS::TripleO::Services::NeutronDhcpAgent - OS::TripleO::Services::NeutronL2gwAgent - OS::TripleO::Services::NeutronL2gwApi - OS::TripleO::Services::NeutronL3Agent - OS::TripleO::Services::NeutronLbaasv2Agent - OS::TripleO::Services::NeutronLbaasv2Api - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronMetadataAgent - OS::TripleO::Services::NeutronML2FujitsuCfab - OS::TripleO::Services::NeutronML2FujitsuFossw - OS::TripleO::Services::NeutronOvsAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaApi - OS::TripleO::Services::NovaConductor - OS::TripleO::Services::NovaConsoleauth - OS::TripleO::Services::NovaIronic - OS::TripleO::Services::NovaMetadata - OS::TripleO::Services::NovaPlacement - OS::TripleO::Services::NovaScheduler - OS::TripleO::Services::NovaVncProxy - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OctaviaApi - OS::TripleO::Services::OctaviaDeploymentConfig - OS::TripleO::Services::OctaviaHealthManager - OS::TripleO::Services::OctaviaHousekeeping - OS::TripleO::Services::OctaviaWorker - OS::TripleO::Services::OpenDaylightApi - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::OVNDBs - OS::TripleO::Services::OVNController - OS::TripleO::Services::Pacemaker - OS::TripleO::Services::PankoApi - OS::TripleO::Services::RabbitMQ - OS::TripleO::Services::Redis - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::SaharaApi - OS::TripleO::Services::SaharaEngine - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::SkydiveAnalyzer - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::SwiftProxy - OS::TripleO::Services::SwiftDispersion - OS::TripleO::Services::SwiftRingBuilder - OS::TripleO::Services::SwiftStorage - OS::TripleO::Services::Tacker - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar - OS::TripleO::Services::Ptp ############################################################################### # Role: Compute0 # ############################################################################### - name: Compute0 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi - Tenant - Storage HostnameFormatDefault: '%stackname%-compute0-%index%' uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::Ptp ############################################################################### # Role: Compute1 # ############################################################################### - name: Compute1 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi1 - Tenant1 - Storage1 HostnameFormatDefault: '%stackname%-compute1-%index%' uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::Ptp ############################################################################### # Role: Compute2 # ############################################################################### - name: Compute2 description: | Basic Compute Node role CountDefault: 1 networks: - InternalApi2 - Tenant2 - Storage2 HostnameFormatDefault: '%stackname%-compute2-%index%' uses_deprecated_params: True deprecated_param_image: 'NovaImage' deprecated_param_extraconfig: 'NovaComputeExtraConfig' deprecated_param_metadata: 'NovaComputeServerMetadata' deprecated_param_scheduler_hints: 'NovaComputeSchedulerHints' deprecated_param_ips: 'NovaComputeIPs' deprecated_server_resource_name: 'NovaCompute' deprecated_nic_config_name: 'compute.yaml' disable_upgrade_deployment: True ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephClient - OS::TripleO::Services::CephExternal - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::ComputeCeilometerAgent - OS::TripleO::Services::ComputeNeutronCorePlugin - OS::TripleO::Services::ComputeNeutronL3Agent - OS::TripleO::Services::ComputeNeutronMetadataAgent - OS::TripleO::Services::ComputeNeutronOvsAgent - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Iscsid - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::NeutronBgpVpnBagpipe - OS::TripleO::Services::NeutronLinuxbridgeAgent - OS::TripleO::Services::NeutronVppAgent - OS::TripleO::Services::NovaCompute - OS::TripleO::Services::NovaLibvirt - OS::TripleO::Services::NovaMigrationTarget - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::OpenDaylightOvs - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::SkydiveAgent - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent - OS::TripleO::Services::Ptp ############################################################################### # Role: CephStorage0 # ############################################################################### - name: CephStorage0 description: | Ceph OSD Storage node role networks: - Storage0 - StorageMgmt0 HostnameFormatDefault: '%stackname%-cephstorage0-%index%' uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Ptp ############################################################################### # Role: CephStorage1 # ############################################################################### - name: CephStorage1 description: | Ceph OSD Storage node role networks: - Storage1 - StorageMgmt1 HostnameFormatDefault: '%stackname%-cephstorage1-%index%' uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Ptp ############################################################################### # Role: CephStorage2 # ############################################################################### - name: CephStorage2 description: | Ceph OSD Storage node role networks: - Storage2 - StorageMgmt2 HostnameFormatDefault: '%stackname%-cephstorage2-%index%' uses_deprecated_params: False deprecated_nic_config_name: 'ceph-storage.yaml' ServicesDefault: - OS::TripleO::Services::Aide - OS::TripleO::Services::AuditD - OS::TripleO::Services::CACerts - OS::TripleO::Services::CephOSD - OS::TripleO::Services::CertmongerUser - OS::TripleO::Services::Collectd - OS::TripleO::Services::Docker - OS::TripleO::Services::Fluentd - OS::TripleO::Services::Ipsec - OS::TripleO::Services::Kernel - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::MySQLClient - OS::TripleO::Services::Ntp - OS::TripleO::Services::ContainersLogrotateCrond - OS::TripleO::Services::Rhsm - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::Securetty - OS::TripleO::Services::SensuClient - OS::TripleO::Services::Snmp - OS::TripleO::Services::Sshd - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned - OS::TripleO::Services::Ptp
附录 D. network_environment 文件示例
resource_registry: OS::TripleO::ControllerLeaf2::Net::SoftwareConfig: /home/stack/nics/controllerleaf2.yaml OS::TripleO::ComputeLeaf3::Net::SoftwareConfig: /home/stack/nics/computeleaf3.yaml OS::TripleO::ComputeLeaf4::Net::SoftwareConfig: /home/stack/nics/computeleaf4.yaml parameter_defaults: ControlPlaneSubnet: leaf1 ControllerLeaf2ControlPlaneSubnet: leaf2 ComputeLeaf3ControlPlaneSubnet: leaf3 ComputeLeaf4ControlPlaneSubnet: leaf4 ControlPlaneDefaultRoute: 10.10.1.1 ControlPlaneSubnetCidr: '24' ControlPlane2DefaultRoute: 10.10.2.1 ControlPlane2SubnetCidr: '24' ControlPlane3DefaultRoute: 10.10.3.1 ControlPlane3SubnetCidr: '24' ControlPlane4DefaultRoute: 10.10.4.1 ControlPlane4SubnetCidr: '24' InternalApiSupernet: 10.20.0.0/16 TenantSupernet: 10.30.0.0/16 ProvisioningSupernet: 10.10.0.0/16 EC2MetadataIp: 10.10.1.10 Leaf2EC2MetadataIp: 10.10.1.10 Leaf3EC2MetadataIp: 10.10.1.10 Leaf4EC2MetadataIp: 10.10.1.10 ServiceNetMap: ComputeLeaf3HostnameResolveNetwork: internal_api3 ComputeLeaf4HostnameResolveNetwork: internal_api4 ComputeLeaf3ExtraConfig: nova::compute::libvirt::vncserver_listen: "%{hiera('internal_api3')}" nova::compute::vncserver_proxyclient_address: "%{hiera('internal_api3')}" neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant3')}" cold_migration_ssh_inbound_addr: "%{hiera('internal_api3')}" live_migration_ssh_inbound_addr: "%{hiera('internal_api3')}" nova::migration::libvirt::live_migration_inbound_addr: "%{hiera('internal_api3')}" nova::my_ip: "%{hiera('internal_api3')}" tripleo::profile::base::database::mysql::client::mysql_client_bind_address: "%{hiera('internal_api3')}" ComputeLeaf4ExtraConfig: nova::compute::libvirt::vncserver_listen: "%{hiera('internal_api4')}" nova::compute::vncserver_proxyclient_address: "%{hiera('internal_api4')}" neutron::agents::ml2::ovs::local_ip: "%{hiera('tenant4')}" cold_migration_ssh_inbound_addr: "%{hiera('internal_api4')}" live_migration_ssh_inbound_addr: "%{hiera('internal_api4')}" nova::migration::libvirt::live_migration_inbound_addr: "%{hiera('internal_api4')}" nova::my_ip: "%{hiera('internal_api4')}" tripleo::profile::base::database::mysql::client::mysql_client_bind_address: "%{hiera('internal_api4')}"