自定义软件安装

已完成

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。

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

注意

例如,一个 Slurm 项目至少包含两个规范:一个用于计划程序头节点,另一个用于计算节点。

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

注意

Azure CycleCloud 使用 Chef 作为配置管理工具,用于准备和配置每个节点。 CycleCloud 在独立模式下使用 Chef,该模式不依赖于集中式 Chef 服务器。 相反,所有针对托管群集节点的指南均在操作系统启动阶段从保险箱下载。 此时,Chef 会处理节点的 cluster-init 规范中定义的配方列表,有效地将基础 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 项目规范。