

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 PCS 集群上配置 Slurm CLI 过滤器插件 AWS
<a name="slurm-cli-filter-plugins-configure"></a>

在创建新的 AWS PCS 集群时配置 CLI 筛选插件。您可以使用更新 API 或控制台在现有集群上启用或禁用 CLI 筛选插件，而无需重新创建集群。

## 先决条件
<a name="slurm-cli-filter-plugins-configure-prerequisites"></a>

在配置 CLI 筛选插件之前，请完成以下任务：
+ 编写并测试实现 CLI 过滤器插件 API 的 Lua 脚本
+ 准确命名你的 Lua 脚本 `cli_filter.lua`
+ 选择一种将脚本部署到所有集群实例（AMI、S3 或文件系统）的方法
+ 确认你使用的是 Slurm 版本 24.11 或更高版本

## 在新集群上启用 CLI 筛选插件
<a name="slurm-cli-filter-plugins-configure-create"></a>

------
#### [ AWS PCS console ]

1. 打开 AWS PCS 控制台，网址为[https://console.aws.amazon.com/pcs/](https://console.aws.amazon.com/pcs/)。

1. 在导航窗格中，选择**集群**。

1. 选择**创建集群**。

1. 选择 Slurm 的有效版本（版本 24.11 或更高版本）。

1. 在 “**日程安排器设置”** 下，展开 “**其他调度程序**设置”。

1. 添加新的 Slurm 自定义设置，**参数名称**设置为`CliFilterPlugins`，**参数值**设置为。`cli_filter/lua`

1. 完成剩余的集群配置，然后选择**创建集群**。

------
#### [ AWS PCS API ]

在调用 `CreateCluster` API 操作时提供`slurmCustomSettings`配置。将 to `CliFilterPlugins` 和 `parameterName` to 设置`parameterValue`为`cli_filter/lua`。有关更多信息，请参阅 *AWS PCS API 参考[CreateCluster](https://docs.aws.amazon.com/pcs/latest/APIReference/API_CreateCluster.html)*中的。

以下示例使用调 AWS CLI 用 `CreateCluster` API 操作。自定义设置`CliFilterPlugins=cli_filter/lua`启用 CLI 过滤器插件。

```
aws pcs create-cluster --cluster-name {{cluster-name}} \
--scheduler type=SLURM,version=24.11 \
--size SMALL \
--networking subnetIds={{cluster-subnet-id}},securityGroupIds={{cluster-security-group-id}} \
--slurm-configuration \
'slurmCustomSettings=[{parameterName=CliFilterPlugins,parameterValue="cli_filter/lua"}]'
```

------

## 部署 CLI 过滤器插件脚本
<a name="slurm-cli-filter-plugins-configure-deploy"></a>

**将 CLI 过滤器插件脚本部署到您的集群**

1. 确保计算节点组中使用的所有 AMI 都通过 AWS PCS Slurm 安装程序安装了 Slurm。
**注意**  
如果您对所有计算节点组使用 AWS PCS 示例 AMI，请跳过此步骤。Slurm 已经安装好了。

1. 将您的`cli_filter.lua`脚本部署到`/etc/aws/pcs/scheduler/slurm-<version>/cli_filter.lua`集群中的所有实例。

   例如，对于 Slurm 版本 24.11：

   ```
   /etc/aws/pcs/scheduler/slurm-24.11/cli_filter.lua
   ```

1. 使用准备好的 AMI 启动所有登录和计算节点。

1. 测试作业提交以验证 CLI 过滤器插件是否正确执行。

## 在现有集群上启用或禁用 CLI 筛选插件
<a name="slurm-cli-filter-plugins-configure-update"></a>

无需重建基础架构，即可在现有集群上启用或禁用 CLI 筛选器插件。有关更多信息，请参阅 [在 AWS PCS 中更新集群](working-with_clusters_update.md)。

------
#### [ AWS PCS console ]

1. 打开 AWS PCS 控制台，网址为[https://console.aws.amazon.com/pcs/](https://console.aws.amazon.com/pcs/)。

1. 在导航窗格中，选择**集群**。

1. 选择要更新的集群。

1. 选择**编辑操作**。

1. 在 “编辑集群” 页面的 “**其他调度程序设置”** 下：
   + 启用 CLI 过滤器插件：添加新的 Slurm 自定义设置，**参数名称**设置为`CliFilterPlugins`，**参数值**设置为。`cli_filter/lua`
   + 要禁用 CLI 过滤器插件，请执行以下操作：删除现有`CliFilterPlugins`设置。

1. 选择**更新集群**以提交更改。

1. 监控集群状态，在更新过程中显示为 “正在更新”，更新完成后显示为 “活动”。

------
#### [ AWS PCS API ]

使用 `UpdateCluster` API 操作启用或禁用 CLI 过滤器插件。有关更多信息，请参阅 *AWS PCS API 参考[UpdateCluster](https://docs.aws.amazon.com/pcs/latest/APIReference/API_UpdateCluster.html)*中的。

要在现有集群上启用 CLI 筛选插件，请执行以下操作：

```
aws pcs update-cluster --cluster-identifier {{my-cluster}} \
--slurm-configuration \
'slurmCustomSettings=[{parameterName=CliFilterPlugins,parameterValue="cli_filter/lua"}]'
```

要在现有集群上禁用 CLI 过滤器插件，请执行以下操作：

```
aws pcs update-cluster --cluster-identifier {{my-cluster}} \
--slurm-configuration \
'slurmCustomSettings=[]'
```

------

## 预期结果
<a name="slurm-cli-filter-plugin-configure-results"></a>

完成配置后：
+ 您的集群是在开启 CLI 筛选插件的情况下创建的
+ Job 提交会在到达 Slurm 控制器之前触发你的自定义验证逻辑
+ Non-compliant 任务被拒绝，并显示您的自定义错误消息
+ 合规作业通过 Slurm 调度器正常进行

## 问题排查
<a name="slurm-cli-filter-plugin-configure-troubleshooting"></a>

**任何节点上都缺少 CLI 过滤器插件脚本**  
**症状：**由于插件加载错误，Job 提交立即失败。  
**可能的原因：**脚本未部署到所有实例，或者文件路径或名称不正确。  
**解决方案：**验证脚本是否存在于所有登录和计算节点上的正确路径上，并具有确切的文件名`cli_filter.lua`。

**CLI 过滤器插件配置无效**  
**症状：**集群创建失败并出现验证错误。  
**可能的原因：**`CliFilterPlugins`参数未设置为`cli_filter/lua`格式。  
**分辨率：**在中使用精确`cli_filter/lua`的参数值`slurmCustomSettings`。