自定义软件安装

已完成

Azure CycleCloud 模板通过抽象底层基础结构的实现详细信息来帮助设置 HPC 群集,使你能够专注于工作负荷管理。 但是,该工作负荷通常具有多个与软件相关的依赖项,这需要额外的自定义步骤。 幸运的是,Azure CycleCloud 还提供了一个框架,通过它支持直接应用于群集节点的预配和配置管理任务来实现这些步骤。

你的目标包括部署自定义映像和使用你在本地 HPC 环境中使用的内部开发配置脚本。 你希望确定如何使用 Azure CycleCloud 功能来实现这些目标。

如何使用 Azure CycleCloud 实现配置管理?

Azure CycleCloud 提供了三种主要方法,可以在群集节点上任意组合,根据自己的要求或首选项自定义操作系统和软件。

  • 自定义映像
  • 项目
  • Cloud-init

如何将自定义映像与 Azure CycleCloud 配合使用?

Azure CycleCloud 支持运行大多数常见 Linux 发行版的群集节点,并且根据调度程序,还支持 Windows Server。 内置模板已预设了推荐的默认设置,但你可以自由选择 Azure 市场镜像或基于自定义镜像预配节点。 如果要最大程度地减少与作系统的部署后设置和 HPC 工作负载的任何其他依赖项相关的延迟,则后一个选项可能更可取。 还可能需要满足业务、安全性或合规性需求。

自定义映像允许你完全控制预安装的软件和初始作系统配置。 它们的主要缺点是与维护多个映像以适应应用程序及其版本的不同组合相关的开销,尤其是在开发场景中。

如何使用 Azure CycleCloud 项目进行软件安装?

Azure CycleCloud 项目是在通过模板定义群集节点的配置时引用的文件集合。 项目具有以下目录结构:

\project
      |- project.ini
      |- blobs
      |- templates
      |- specs
      |      | 
      |    default
      |      |- cluster-init
      |            |- scripts
      |            |- files
      |            |- tests
      |      | - chef
      |            |- site-cookbooks
      |            |- data_bag
      |            |- roles

project.ini 文件包含项目的元数据,包括项目的名称、标签、版本和类型。 支持的类型包括计划程序和应用程序。 第一个用于在头节点和计算节点上安装和初始化计划程序守护程序,而后者则定义群集工作负荷。

blobs 目录包含项目 blob,例如可自由重新分发的开源项目的二进制文件,以及由于许可限制而必须从项目重新分发中排除的用户 blob。

模板目录包含模板,而规范目录托管用于定义要应用于目标群集节点的配置的规范。

注释

例如,Slurm 项目至少包括两个规范:一个用于调度程序主节点,另一个用于计算节点。

在规范目录中,有两个名为 cluster-init自定义 Chef 的子目录。 Cluster-init 包含自动在目标节点上运行的脚本。 复制到目标节点的原始数据文件,以及将在测试模式下启动群集时运行的测试。 自定义 Chef 子目录包含特定于 Chef 的文件,包括食谱、数据包和角色定义文件。 可以使用 Chef 指南和配方配置节点。 Cluster-init 规范映射到 Chef 角色和指南。

注释

Azure CycleCloud 使用 Chef 作为配置管理工具来准备和配置每个节点。 CycleCloud 在不依赖于集中式 Chef 服务器的独立模式下使用 Chef。 相反,所有针对托管群集节点的指南均在操作系统启动阶段从保险箱下载。 此时,Chef 会处理节点的群集初始化规范中定义的食谱列表,从而有效地将基础 VM 转换为有效的 HPC 节点。

若要基于项目预配群集,需要将项目的内容上传到 Azure CycleCloud 保险箱。 然后,每当目标节点启动时,它都会从保险箱自动下载所需的项目文件,并处理所需的规格。

如何将 cloud-init 与 Azure CycleCloud 配合使用?

在应用项目相关规范之前,Azure CycleCloud 支持 cloud-init 作为在启动阶段配置群集节点的方法。 这提供了一种方便的方法,用于解决任何基础结构或软件相关的依赖项,例如配置网络设置或应用作系统包更新。

虽然可以使用模板定义 cloud-init 配置,但也可以直接从 Azure CycleCloud 图形界面完成此作。 创建或编辑群集时,可以在标记为 Cloud-Init 的选项卡上找到相关设置,可在其中输入每个节点类型的脚本。

注释

由于 cloud-init 在任何 CycleCloud 项目规格之前运行,调度程序以及 Azure CycleCloud 应用于节点的配置可能会覆盖通过 cloud-init 实施的更改。 如果需要确保命令在安装计划程序后运行,则应改用 Azure CycleCloud 项目规范。