启用 TripleO 通过 Ansible 部署 Dell EMC PowerFlex 软件定义存储

问题描述

目前没有从 TripleO 内部部署 VxFlexOS 的自动化方法。目标是在部署期间和生命周期操作期间提供易用性。

提议的变更

概述

VxFlexOS 已被重新命名为 PowerFlex。

使用 TripleO 启动 PowerFlex 的部署体验应如下所示

部署者选择部署包含任何 PowerFlex 服务(PowerflexMDM、PowerflexLIA、PowerflexSDS 和 PowerflexSDC)的角色。

应定义至少三个新的 Overcloud 角色,例如:- 带有 PowerFlex 的 Controller - 带有 PowerFlex 的 Compute - 带有 PowerFlex 的 Storage

使用自定义角色定义来定义哪些服务将在哪种类型的节点上运行。我们将使用此自定义 roles_data.yaml 来部署 overcloud。

已经考虑了 PowerFlex 对 HCI 的支持,将计算和存储结合到一个节点中,但不会包含在第一个版本中。

部署者提供 PowerFlex 参数,如今天在 Heat env 文件中提供的参数。

部署者启动部署,并获得一个带有 PowerFlex 和适当服务的 overcloud,这些服务根据其角色部署在每个节点上。当前代码在此处可用。仍在 WIP 中。

https://github.com/dell/tripleo-powerflex

以下文件将在 /usr/share/openstack-tripleo-heat-templates/deployment/powerflex-ansible 中创建:- powerflex-base.yaml - powerflex-lia.yaml - powerflex-mdm.yaml - powerflex-sdc.yaml - powerflex-sds.yaml 所有这些文件都负责每个服务的配置。每个服务都基于 powerflex-base.yaml 模板,该模板调用 Ansible playbook 并触发部署。

目录 /usr/share/powerflex-ansible 包含安装和配置 PowerFlex 的 Ansible playbook。

在 /usr/share/ansible/roles 中创建了一个新的 tripleo-ansible 角色,名为 tripleo-powerflex-run-ansible,用于准备变量并触发 PowerFlex Ansible playbook 的执行。

在 /usr/share/openstack-tripleo-heat-emplates/environments/powerflex-ansible 中创建了一个名为 powerflex-ansible.yaml 的环境文件,并定义了资源注册表映射以及 PowerFlex Ansible playbook 所需的附加参数。

需要打开的端口由 TripleO 管理。

使用 TripleO Ansible 部署 PowerFlex

创建一个 TripleO Ansible playbook 以部署 PowerFlex 系统的提案。

我们将 PowerFlex 系统视为在基于角色的基础上部署在节点上的服务集合。

此处描述的 playbook 假定以下内容

部署者选择部署 PowerFlex 并包含以下 Overcloud 角色,这些角色根据 THT 的 roles_data.yaml 中找到的映射安装 PowerFlex 服务

角色 | 关联的 PowerFlex 服务 |
———- | —————————————- |
Controller | PowerflexMDM, PowerflexLIA, PowerflexSDC |
Compute | PowerflexLIA, PowerflexSDC |
Storage | PowerflexLIA, PowerflexSDS |

部署者选择包含新的 Heat 环境文件,这些文件将在实现此规范时位于 THT 中。环境文件将更改上一步中任何四项服务的实现。

在部署期间调用一个新的 Ansible playbook,该 playbook 触发适当的 PowerFlex Ansible playbook 的执行。

这可以被识别为级联式 Ansible 部署。

将为下面描述的每个目标创建单独的 Ansible playbook

  • OpenStack 和 PowerFlex 的初始部署

  • 更新和升级 PowerFlex SW

  • 扩展或缩减 DayN 操作

此提案仅涉及单个 PowerFlex 系统部署。

RPM/内核依赖项

Virt-Customize 将用于将 rpm 注入到新的安装的 overcloud-full-image 中。

版本依赖项

版本控制在当前提案之外处理。暂存区域具有特定于 overcloud 镜像的 OS 版本的 PowerFlex 包。

Ansible playbook

OpenStack 和 PowerFlex 的初始部署

在此新的 Ansible playbook 在 TripleO 中初始部署期间触发的事件序列如下

1. 在 Heat 中定义 Undercloud 上的 Overcloud。这包括与 PowerFlex 相关的 Heat 参数,这些参数稍后将通过 TripleO Ansible playbook 传递给 powerflex-ansible。

2. 使用默认 PowerFlex 选项运行 openstack overcloud deploy,并包含一个新的 Heat 环境文件,以使服务部署的实现使用 powerflex-ansible。

3. undercloud 组装并将部署计划上传到 undercloud Swift。

  1. TripleO 开始部署 Overcloud 并相应地与 Heat 交互。

5. 达到一个点,在该点上对 Overcloud 节点进行镜像、引导和联网。此时,undercloud 可以访问 Overcloud 节点的配置或管理 IP。

6. 负责的 TripleO Ansible playbook 部署 PowerFlex,其中包含 PowerflexMDM、PowerflexLIA、PowerflexSDS 和 PowerflexSDC 等任何四种 PowerFlex 服务。

7. 托管 PowerFlex 服务的服务器将根据其服务的需要打开相关的防火墙端口,例如,PowerflexMDM 配置为接受 TCP 端口 9011 和 6611 上的流量。

8. 将定义要覆盖的附加参数的新 Heat 环境文件传递给 TripleO Ansible playbook。

9. TripleO Ansible playbook 将这些参数转换为 powerflex-ansible 期望的参数。转换包括构建可以通过调用 ansible-playbook –extra-vars 传递给 playbook 的参数列表。可以通过参数指定 /usr/share/powerflex-ansible 的替代位置。

10. 调用 TripleO Ansible playbook 并传递先前描述的参数列表。使用带有 -i 选项的动态 Ansible 清单。为了使 powerflex-ansible 正常工作,清单中必须有名为 [mdms]、‘[tbs]’、‘[sdss]’ 和 ‘[sdcs]’ 的组。

11. TripleO Ansible playbook 使用 powerflex-ansible 播放列表集启动 PowerFlex 安装

更新/升级 PowerFlex SW

待定

扩展/缩减

此实现支持在任何时候(Day+N 操作)添加或删除 SDS 和/或 SDC,使用相同的方法。

1. 部署者选择要添加到 Powerflex 系统或从 Powerflex 系统中删除的节点类型。

2. 部署者启动 Overcloud 上的更新,这将启动或关闭要添加/删除的节点。

  1. 节点将被添加到或从 Overcloud 中删除。

  2. SDS 和 SDC SW 将被添加到或从 PowerFlex 系统中删除。

5. 存储容量将相应地更新。对于缩减操作,只有在以下情况下才会成功:- 至少保留 3 个 SDS 节点 - 可用的空闲存储容量足以进行数据重新平衡

PowerFlex 服务细分

PowerFlex 系统分解为多个组件,这些组件中的每一个都必须安装在特定的节点类型上。

非 HCI 模型

  • Controller 将托管 PowerflexLIA、PowerflexMDM 和 PowerflexSDC(Glance)组件。需要至少 3 个 MDM。

  • Computes 将托管 PowerflexLIA 和 PowerflexSDC,因为它们将负责访问卷。没有最低要求。

  • Storage 将托管 PowerflexLIA 和 PowerflexSDS,因为磁盘将作为后端呈现。需要至少 3 个 SDS。还需要至少 1 个磁盘才能连接 SDS。

HCI 模型

  • Controller 将托管 PowerflexLIA、PowerflexMDM 和 PowerflexSDC(Glance)组件。需要至少 3 个 MDM。

  • Compute HCI 将托管 PowerflexLIA 和 PowerflexSDC,因为它们将负责访问卷和 PowerflexSDS,因为磁盘将作为后端呈现。需要至少 3 个 SDS。还需要至少 1 个磁盘才能连接 SDS。

安全影响

  • 将在 undercloud 上创建一个新的 SSH 密钥对。该对的公钥将安装在所有 Overcloud 节点(将是 MDM、SDS 或 SDC)上 heat-admin 用户的 authorized_keys 文件中。此过程将遵循用于创建 TripleO 验证所用的 SSH 密钥的相同模式,因此在这方面不会发生任何新的事情;只是同一类型过程的另一个实例。

  • 额外的防火墙配置需要包括 Powerflex 服务根据以下内容所需的全部 TCP/UDP 端口:| Overcloud 角色 | PowerFlex 服务 | 端口 | | ————– | —————– | ———————- | | Controller | LIA, SDC, SDS | 9099, 7072, 6611, 9011 | | Compute | LIA, SDC | 9099 | | Storage | LIA, SDS | 9099, 7072 |

  • 像 scini.ko 这样的内核模块包将根据 overcloud 节点的操作系统版本安装。

  • 问题:vxflexOS 使用的 IP 端口是否需要进行 SELinux 更改?

性能影响

以下适用于 undercloud

  • TripleO Ansible 需要运行额外的 playbook