

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自訂引導操作
<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)組態設定， 會在節點啟動後立即 AWS ParallelCluster 執行任意程式碼。如果您定義 [`HeadNode`](HeadNode-v3.md) / [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions) / [`OnNodeConfigured`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)組態設定， 會在節點組態正確完成後 AWS ParallelCluster 執行程式碼。

從 3.4.0 AWS ParallelCluster 版開始，如果您定義 / [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions) / [`HeadNode`](HeadNode-v3.md) [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)組態設定，則可以在前端節點更新後執行程式碼。

在大多數情況下，此程式碼會儲存在 Amazon Simple Storage Service (Amazon S3) 中，並透過 HTTPS 連線存取。程式碼會以 執行`root`，並且可以使用叢集作業系統支援的任何指令碼語言。程式碼通常使用 *Bash* 或 *Python*。

**注意**  
從 3.7.0 [`Imds`](Imds-cluster-v3.md#Imds-cluster-v3.title) AWS ParallelCluster 版開始，叢集/[`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://aws.amazon.com/compliance/shared-responsibility-model/)中所述。確認您的自訂引導指令碼和引數來自您信任的來源，以完整存取叢集節點。

**警告**  
AWS ParallelCluster 不支援使用透過 `/etc/parallelcluster/cfnconfig` 檔案提供的內部變數。此檔案可能在未來版本中移除。

`OnNodeStart` 動作會在啟動任何節點部署引導操作之前呼叫，例如設定 NAT、Amazon Elastic Block Store (Amazon EBS) 或排程器。`OnNodeStart`引導操作可能包括修改儲存、新增額外的使用者，以及新增套件。

**注意**  
如果您為叢集設定 [`HeadNode`](HeadNode-v3.md) [`DirectoryService`](DirectoryService-v3.md)和 / / [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions) [`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)指令碼`sssd`， 會在執行`OnNodeStart`指令碼之前 AWS ParallelCluster 設定`DirectoryService`並重新啟動 。

`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) / / [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)[`Scheduling`](Scheduling-v3.md)[`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)[`CustomActions`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-CustomActions)組態區段中為每個佇列指定不同的指令碼。 [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated) 只能在 `HeadNode`區段中設定。

**注意**  
在 3.0 AWS ParallelCluster 版之前，無法為頭部和運算節點指定不同的指令碼。請參閱 [從 AWS 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)