

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejemplos de acciones del ciclo de vida de un nodo para AWS PC
<a name="cng-node-lifecycle-actions-examples"></a>

Los siguientes ejemplos utilizan el AWS CLI para configurar las acciones del ciclo de vida de los nodos. Puedes definir las acciones del ciclo de vida al crear un grupo de nodos de procesamiento con`create-compute-node-group`, o añadirlas o cambiarlas en un grupo de nodos de procesamiento existente con`update-compute-node-group`. El `--node-lifecycle-actions` valor es el mismo para ambos comandos.

## Múltiples guiones en todas las etapas
<a name="cng-node-lifecycle-actions-examples-multiple"></a>

Este ejemplo combina scripts de ambas etapas del ciclo de vida con diferentes políticas de ejecución y comportamientos de error.

```
aws pcs create-compute-node-group --region {{region}} \
  --cluster-identifier {{my-cluster}} \
  --compute-node-group-identifier {{my-cng}} \
  --subnet-ids {{subnet-ExampleID1}} \
  --custom-launch-template id={{lt-ExampleID1}},version='{{1}}' \
  --iam-instance-profile-arn={{arn:InstanceProfile}} \
  --scaling-config minInstanceCount={{0}},maxInstanceCount={{10}} \
  --instance-configs instanceType={{t3.large}} \
  --node-lifecycle-actions '{
    "stages": {
      "nodeBootstrapped": [
        { "name": "Mount FSx Lustre", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/mount-fsx.sh" }, "arguments": ["fs-{{0abc123}}", "/scratch"], "executionPolicy": "EVERY_BOOT" },
        { "name": "Join Active Directory", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/configure-ad.sh" }, "arguments": ["ad.example.com", "EXAMPLE"], "executionPolicy": "FIRST_BOOT_ONLY" }
      ],
      "nodeReady": [
        { "name": "Configure CloudWatch logging", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/setup-cloudwatch.sh" }, "arguments": ["/aws/pcs/{{my-cluster}}"], "onError": "CONTINUE" }
      ]
    }
  }'
```

## Comportamiento de error mixto
<a name="cng-node-lifecycle-actions-examples-mixed-error"></a>

En este ejemplo se utilizan scripts críticos y opcionales en la misma fase. El primero termina el nodo en caso de error; el segundo continúa.

```
aws pcs create-compute-node-group --region {{region}} \
  --cluster-identifier {{my-cluster}} \
  --compute-node-group-identifier {{my-cng}} \
  --subnet-ids {{subnet-ExampleID1}} \
  --custom-launch-template id={{lt-ExampleID1}},version='{{1}}' \
  --iam-instance-profile-arn={{arn:InstanceProfile}} \
  --scaling-config minInstanceCount={{0}},maxInstanceCount={{10}} \
  --instance-configs instanceType={{t3.large}} \
  --node-lifecycle-actions '{
    "stages": {
      "nodeBootstrapped": [
        { "name": "Install required packages", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/install-packages.sh" }, "onError": "TERMINATE" },
        { "name": "Install optional tools", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/install-optional.sh" }, "onError": "CONTINUE" }
      ]
    }
  }'
```

## Validación de la integridad con una suma de comprobación
<a name="cng-node-lifecycle-actions-examples-checksum"></a>

Añade una SHA-256 suma de comprobación para que el agente rechace un script si su contenido no coincide.

```
aws pcs update-compute-node-group \
  --cluster-identifier {{my-cluster}} \
  --compute-node-group-identifier {{my-cng}} \
  --node-lifecycle-actions '{
    "stages": {
      "nodeBootstrapped": [
        {
          "name": "Mount EFS",
          "scriptSource": {
            "scriptLocation": "s3://{{my-bucket}}/mount-efs.sh",
            "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
          },
          "arguments": ["fs-{{12345678}}", "/shared"]
        }
      ]
    }
  }'
```

## Habilite la actualización del script al reiniciar
<a name="cng-node-lifecycle-actions-examples-refresh"></a>

Se establece `scriptCachingPolicy` en`REFRESH_ON_REBOOT`. Esta `UpdateComputeNodeGroup` llamada es un cambio de configuración, por lo que agota y reemplaza las instancias existentes. Una vez finalizado el reemplazo, las instancias vuelven a descargar los scripts cada vez que se reinician. A continuación, puede actualizar el contenido de los scripts en Amazon S3 y las instancias recogerán el cambio en su siguiente reinicio sin necesidad de realizar ninguna otra llamada a la API.

```
aws pcs update-compute-node-group \
  --cluster-identifier {{my-cluster}} \
  --compute-node-group-identifier {{my-cng}} \
  --node-lifecycle-actions '{
    "stages": { "nodeBootstrapped": [ { "name": "Mount EFS", "scriptSource": { "scriptLocation": "s3://{{my-bucket}}/mount-efs.sh" }, "arguments": ["fs-{{12345678}}", "/shared"], "executionPolicy": "EVERY_BOOT" } ] },
    "scriptCachingPolicy": "REFRESH_ON_REBOOT"
  }'
```

## Migración desde las acciones de ParallelCluster arranque de AWS
<a name="cng-node-lifecycle-actions-examples-migrate"></a>

Muchos scripts de AWS ParallelCluster arranque existentes funcionan tal cual con AWS las acciones del ciclo de vida de PCS. AWS PCS proporciona la gestión de errores (`TERMINATE``STOP_SEQUENCE`, o`CONTINUE`) y el control de reinicio (`FIRST_BOOT_ONLY`o) por script. `EVERY_BOOT` El valor predeterminado de AWS PCS es`FIRST_BOOT_ONLY`. Para que coincida con ParallelCluster el comportamiento (se ejecuta en cada arranque), `executionPolicy` configúrelo en`EVERY_BOOT`.


| **AWS ParallelCluster** | **AWS PCS ** | 
| --- | --- | 
| `OnNodeStart` | `nodeBootstrapped`(se ejecuta después de la fase de configuración del AWS PCS, antes`slurmd`) | 
| `OnNodeConfigured` | `nodeReady`(se ejecuta después de que el nodo se registre en el controlador Slurm) | 
| `OnNodeUpdated` | ¿No hay equivalente AWS en PCS | 