

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

# 自定义引导操作
<a name="custom-bootstrap-actions-v3"></a>

如果定义了 [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)/[`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)配置设置，则会在节点启动后立即 Amazon ParallelCluster 运行任意代码。如果定义了 [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)/[`OnNodeConfigured`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)配置设置，则在正确完成节点配置后 Amazon ParallelCluster 运行代码。

从 3.4.0 Amazon ParallelCluster 版开始，如果您定义了 [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)/[`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)配置设置，则可以在头节点更新后运行代码。

在大多数情况下，此代码存储在 Amazon Simple Storage Service (Amazon S3) 中并通过 HTTPS 连接进行访问。此代码将以 `root` 用户身份运行，可以采用集群操作系统支持的任何脚本语言。代码通常采用 *Bash* 或 *Python* 语言。

**注意**  
从 3.7.0 Amazon ParallelCluster 版开始，集群 [`Imds`](Imds-cluster-v3.md#Imds-cluster-v3.title)/[`ImdsSupport`](Imds-cluster-v3.md#yaml-cluster-Imds-ImdsSupport)默认设置为。`v2.0`  
当您创建要升级到版本 3.7.0 及更高版本的新集群时，要么更新您的自定义引导操作脚本使其与之兼容，要 IMDSv2 么在集群配置文件`v1.0`中将 [`Imds`](Imds-cluster-v3.md#Imds-cluster-v3.title)/[`ImdsSupport`](Imds-cluster-v3.md#yaml-cluster-Imds-ImdsSupport)设置为。

**警告**  
您有责任按照责任[共担模型](https://www.amazonaws.cn/compliance/shared-responsibility-model/)中所述配置自定义脚本和参数。验证您的自定义引导脚本和参数是否来自您信任的可以完全访问集群节点的来源。

**警告**  
Amazon ParallelCluster 不支持使用通过`/etc/parallelcluster/cfnconfig`文件提供的内部变量。此文件可能会在未来版本中删除。

在开始任何节点部署引导操作（例如配置 NAT、Amazon Elastic Block Store (Amazon EBS) 或调度器）之前，将会调用 `OnNodeStart` 操作。`OnNodeStart` 引导操作可能包括修改存储、添加额外的用户和添加程序包。

**注意**  
如果您为集群配置[`DirectoryService`](DirectoryService-v3.md)和 [`HeadNode`[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)](HeadNode-v3.md)//[`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)脚本，则会在集群运行脚本`sssd`之前 Amazon ParallelCluster 配置`DirectoryService`并重新启动。`OnNodeStart`

节点引导过程完成后将会调用 `OnNodeConfigured` 操作。`OnNodeConfigured` 操作是实例被视为完全配置并已完成之前执行的最后操作。某些 `OnNodeConfigured` 操作包括更改调度器设置、修改存储和修改程序包。您可以通过在配置期间指定参数来将参数传递给脚本。

在头节点更新完成并且调度器和共享存储与最新的集群配置更改保持一致之后，将会调用 `OnNodeUpdated` 操作。

当 `OnNodeStart` 或 `OnNodeConfigured` 自定义操作成功时，将使用退出代码零 (0) 来表示成功。任何其他退出代码都表示实例引导失败。

当 `OnNodeUpdated` 自定义操作成功时，将使用退出代码零 (0) 来表示成功。任何其他退出代码都表示更新失败。

**注意**  
如果配置 [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)，则在更新失败时，必须将 `OnNodeUpdated` 操作手动恢复到先前的状态。  
如果 `OnNodeUpdated` 自定义操作失败，则更新将回滚到之前的状态。但 `OnNodeUpdated` 操作仅在更新时运行，而不是在堆栈回滚时运行。

在/和 i [`HeadNode`](HeadNode-v3.md)/[`Scheduling`[`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)](Scheduling-v3.md)/[`CustomActions`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-CustomActions)配置部分中，您可以为头节点[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)和每个队列指定不同的脚本。 [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)只能在该`HeadNode`部分中进行配置。

**注意**  
在 3.0 Amazon ParallelCluster 版本之前，无法为头节点和计算节点指定不同的脚本。请参阅 [从 Amazon ParallelCluster 2.x 升级到 3.x](moving-from-v2-to-v3.md)。

**Topics**
+ [用于定义操作和参数的配置设置](custom-bootstrap-actions-config-v3.md)
+ [参数](custom-bootstrap-actions-args-v3.md)
+ [包含自定义引导操作的示例集群](custom-bootstrap-actions-example-cluster-v3.md)
+ [如何更新自定义引导脚本的示例 IMDSv2](custom-bootstrap-actions-example-imdsv2-v3.md)
+ [如何更新配置的示例 IMDSv1](custom-bootstrap-actions-example-imdsv1-v3.md)