

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Exécuter des scripts de configuration de l'hôte avec des privilèges d'administrateur
<a name="smf-admin"></a>

Les scripts de configuration de l'hôte vous permettent d'effectuer des tâches administratives, telles que l'installation de logiciels, auprès des employés de votre parc géré par des services. Ces scripts s'exécutent avec des privilèges élevés (`sudo`activéLinux, administrateur activéWindows), ce qui vous donne la flexibilité de configurer vos travailleurs pour votre système.

Deadline Cloud exécute le script une fois que le travailleur est entré dans l'`STARTING`état et avant qu'il n'exécute les tâches.

**Important**  
Le script s'exécute avec des autorisations élevées. Il est de votre responsabilité de vous assurer que le script ne présente aucun problème de sécurité.  
Lorsque vous utilisez un script de configuration hôte, vous êtes chargé de surveiller l'état de santé de votre flotte.

Les utilisations courantes des scripts de configuration d'hôte sont les suivantes :
+ Installation de logiciels nécessitant l'accès d'un administrateur
+ Installation de Docker conteneurs
+ Installation de solutions de stockage cloud tierces telles queLucidLink. Pour une présentation détaillée, voir [Configurer LucidLink avec des scripts de flotte gérés par des services pour Deadline Cloud](https://aws.amazon.com/blogs/media/set-up-lucidlink-with-service-managed-fleet-scripts-for-aws-deadline-cloud/) sur le blog AWS for M&E.

Vous pouvez créer et mettre à jour un script de configuration d'hôte à l'aide de la console ou du AWS CLI.

------
#### [ Console ]

1. Sur la page des **détails de la flotte**, choisissez l'onglet **Configurations**.

1. Dans le champ **Script**, entrez le script à exécuter avec des autorisations élevées. Vous pouvez choisir **Importer** pour charger un script depuis votre poste de travail.

1. Définissez un délai d'expiration en secondes pour exécuter le script. La valeur par défaut est de 300 secondes (5 minutes).

1. Choisissez **Enregistrer les modifications** pour enregistrer le script.

------
#### [ Create with CLI ]

Utilisez la AWS CLI commande suivante pour créer un parc à l'aide d'un script de configuration d'hôte. Remplacez le {{placeholder}} texte par vos informations.

```
aws deadline create-fleet \
--farm-id {{farm-12345}} \
--display-name "{{fleet-name}}" \
--max-worker-count 1 \
--configuration '{
"serviceManagedEc2": {
  "instanceCapabilities": {
    "vCpuCount": {"min": 2},
    "memoryMiB": {"min": 4096},
    "osFamily": "linux",
    "cpuArchitectureType": "x86_64"
  },
  "instanceMarketOptions": {"type":"spot"}
}
}' \
--role-arn arn:aws:iam::{{111122223333}}:role/{{role-name}} \
--host-configuration '{ "scriptBody": "{{script body}}", "scriptTimeoutSeconds": {{timeout value}}}'
```

------
#### [ Update with CLI ]

Utilisez la AWS CLI commande suivante pour mettre à jour le script de configuration de l'hôte d'une flotte. Remplacez le {{placeholder}} texte par vos informations.

```
aws deadline update-fleet \
--farm-id {{farm-12345}} \
--fleet-id {{fleet-455678}} \
--host-configuration '{ "scriptBody": "{{script body}}", "scriptTimeoutSeconds": {{timeout value}}}'
```

------

Les scripts suivants illustrent ce qui suit :
+ Les variables d'environnement disponibles pour le script
+ Ces AWS informations d'identification fonctionnent dans le shell
+ Que le script s'exécute dans un shell surélevé

------
#### [ Linux ]

Utilisez le script suivant pour montrer qu'un script s'exécute avec des `root` privilèges :

```
# Print environment variables
set 
# Check AWS Credentials
aws sts get-caller-identity
```

------
#### [ Windows ]

Utilisez le PowerShell script suivant pour montrer qu'un script est exécuté avec des privilèges d'administrateur :

```
Get-ChildItem env: | ForEach-Object { "$($_.Name)=$($_.Value)" }
aws sts get-caller-identity
function Test-AdminPrivileges {
  $currentUser = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
  $isAdmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
  
  return $isAdmin
}

if (Test-AdminPrivileges) {
  Write-Host "The current PowerShell session is elevated (running as Administrator)."
} else {
  Write-Host "The current PowerShell session is not elevated (not running as Administrator)."
}
exit 0
```

------

## Résolution des problèmes liés aux scripts de configuration de l'hôte
<a name="smf-admin-troubleshooting"></a>

Lorsque vous exécutez le script de configuration de l'hôte : 
+ En cas de succès : le travailleur exécute le travail
+ En cas d'échec (code de sortie différent de zéro ou crash) : 
  + Le travailleur s'arrête

  La flotte lance automatiquement un nouveau travailleur à l'aide du dernier script de configuration de l'hôte

Pour surveiller le script, procédez comme suit :

1. Ouvrez la page du parc dans la console Deadline Cloud.

1. Choisissez **View workers** pour ouvrir le moniteur Deadline Cloud.

1. Consultez le statut du travailleur sur la page du moniteur.

**Astuce**  
Lorsque vous testez des scripts de configuration de l'hôte, définissez le nombre maximum de travailleurs du parc sur 1 afin d'éviter de démarrer plusieurs travailleurs pendant l'itération du script.

Remarques importantes :
+ Les travailleurs qui s'arrêtent en raison d'une erreur ne figurent pas dans la liste des travailleurs du moniteur. Utilisez CloudWatch Logs pour afficher les journaux des travailleurs dans le groupe de journaux suivant :

  ```
  /aws/deadline/farm-{{XXXXX}}/fleet-{{YYYYY}}
  ```

  Dans ce groupe de journaux, recherchez un flux nommé`worker-{{ZZZZZ}}`.
+ CloudWatch Logs conserve les journaux des employés conformément à la période de conservation que vous avez configurée.

### Surveiller l'exécution du script de configuration de l'hôte
<a name="smf-admin-monitoring"></a>

Avec les scripts de configuration de l'hôte, vous pouvez prendre le contrôle total d'un travailleur de Deadline Cloud. Vous pouvez installer n'importe quel package logiciel, reconfigurer les paramètres du système d'exploitation ou monter des systèmes de fichiers partagés. Grâce à cette fonctionnalité avancée et à la capacité de Deadline Cloud à s'adapter à des milliers de travailleurs, vous pouvez surveiller si les scripts de configuration sont exécutés avec succès ou ont échoué.

Nous recommandons les solutions suivantes pour surveiller l'exécution des scripts de configuration de l'hôte.

#### CloudWatch Surveillance des journaux
<a name="smf-admin-cloudwatch-logs"></a>

Tous les journaux de configuration des hôtes du parc sont transmis au groupe de CloudWatch journaux du parc, et plus particulièrement au flux de CloudWatch journaux d'un travailleur. Par exemple, `/aws/deadline/farm-123456789012/fleet-777788889999` est le groupe de journaux pour la ferme `123456789012` et la flotte`777788889999`.

Chaque collaborateur fournit un flux de journal dédié, par exemple`worker-123456789012`. Les journaux de configuration de l'hôte incluent des bannières telles que *Running Host Configuration Script* et *Finished running Host Configuration Script, code de sortie : 0*. Le code de sortie du script est inclus dans la bannière finale et peut être demandé à l'aide CloudWatch d'outils.

#### CloudWatch Informations sur les journaux
<a name="smf-admin-log-insights"></a>

CloudWatch Logs Insights propose des fonctionnalités avancées pour analyser les informations des journaux. Par exemple, la requête Log Insights suivante analyse le code de sortie de la configuration de l'hôte, trié par heure :

```
fields @timestamp, @message, @logStream, @log
| filter @message like /Finished running Host Configuration Script/
| parse @message /exit code: (?<exit_code>\d+)/
| display @timestamp, exit_code
| sort @timestamp desc
```

Pour plus d'informations sur CloudWatch Logs Insights, consultez [Analyser les données des CloudWatch journaux avec Logs Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html) dans le *guide de l'utilisateur Amazon CloudWatch Logs*.

##### Journalisation structurée par un agent de travail
<a name="smf-admin-structured-logging"></a>

L'agent de travail de Deadline Cloud publie des journaux JSON structurés sur CloudWatch. Le Worker Agent propose un large éventail de journaux structurés pour analyser la santé des travailleurs. Pour plus d'informations, consultez la section [Connexion de l'agent de travail à Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-worker-agent/blob/mainline/docs/logging.md) GitHub.

Les attributs des journaux structurés sont décompressés dans les champs de Log Insights. Vous pouvez utiliser cette CloudWatch fonctionnalité pour compter et analyser les échecs de démarrage de la configuration de l'hôte. Par exemple, une requête count et bin peut être utilisée pour déterminer la fréquence des défaillances :

```
fields @timestamp, @message, @logStream, @log
| sort @timestamp desc
| filter message like /Worker Agent host configuration failed with exit code/
| stats count(*) by exit_code, bin(1h)
```

#### CloudWatch filtres métriques pour les métriques et les alarmes
<a name="smf-admin-metric-filters"></a>

Vous pouvez configurer CloudWatch des filtres de mesures pour générer des CloudWatch métriques à partir des journaux. Les filtres métriques vous permettent de créer des alarmes et des tableaux de bord pour surveiller l'exécution des scripts de configuration de l'hôte.

**Pour créer un filtre de métrique**

1. Ouvrez la CloudWatch console.

1. Dans le volet de navigation, choisissez **Logs**, puis **Log groups**.

1. Sélectionnez le groupe de journaux de votre flotte.

1. Choisissez **Créer un filtre de métriques**.

1. Définissez votre modèle de filtre à l'aide de l'une des méthodes suivantes :
   + **Pour les indicateurs de réussite :**

     ```
     {$.message = "*Worker Agent host configuration succeeded.*"}
     ```
   + **Pour les mesures de défaillance :**

     ```
     {$.exit_code != 0 && $.message = "*Worker Agent host configuration failed with exit code*"}
     ```

1. Choisissez **Next** pour créer une métrique avec les valeurs suivantes :
   + **Espace de noms métrique :** votre espace de noms métrique (par exemple,) **MyDeadlineFarm**
   + **Nom de la métrique :** le nom de la métrique que vous avez demandé (par exemple,**host\_config\_failure**)
   + **Valeur de la métrique :** **1** (chaque instance est un compte de 1)
   + **Valeur par défaut :** Laisser vide
   + **Unité :** **Count**

Après avoir créé des filtres métriques, vous pouvez configurer des CloudWatch alarmes standard pour agir en cas de taux d'échec élevé de la configuration des hôtes, ou ajouter les métriques à un CloudWatch tableau de bord pour les day-to-day opérations et la surveillance.

Pour plus de détails, consultez la section [Syntaxe des filtres et](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html) des modèles dans le *guide de l'utilisateur Amazon CloudWatch Logs*.