

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.

# Gestion des scripts
<a name="scripts-management"></a>

La solution Cloud Migration Factory sur AWS permet aux utilisateurs de gérer entièrement la bibliothèque de scripts ou de packages d'automatisation au sein de l'interface utilisateur. Vous pouvez télécharger de nouveaux scripts personnalisés ainsi que de nouvelles versions du script à l'aide de l'interface de gestion des scripts. Lorsque plusieurs versions sont disponibles, un administrateur peut passer d'une version à l'autre, ce qui permet de tester les mises à jour avant de les définir par défaut. L'interface de gestion des scripts permet également aux administrateurs de télécharger des packages de scripts pour mettre à jour ou revoir le contenu.

Un package de script pris en charge est une archive zip compressée contenant les fichiers obligatoires suivants à la racine :
+  **Package-structure.yml** - Utilisé pour définir les arguments du script et d'autres métadonnées, telles que la description et le nom par défaut. Reportez-vous à la section [Composer un nouveau package de script](#composing-a-new-script-package) pour plus de détails.
+  **[script python personnalisé] .py** - Il s'agit du script initial qui sera exécuté lorsqu'une tâche sera soumise. Ce script peut appeler d'autres scripts et modules et si c'est le cas, ceux-ci doivent être inclus dans l'archive. Le nom de ce script doit correspondre à la valeur spécifiée dans la `MasterFileName` clé du`Package-Structure.yml`.

## Configuration de la plateforme informatique
<a name="compute-platform-configuration"></a>

Deux plateformes de calcul sont disponibles pour exécuter des scripts d'automatisation :\$1 « SSM Automation Document » - Exécute le script directement en tant que document d'automatisation AWS Systems Manager sans nécessiter de serveur d'automatisation \$1 « Automation Server » - Exécute le script sur une instance de serveur d'automatisation dédiée (il s'agit de la plateforme par défaut si elle n'est pas spécifiée)

La plate-forme de calcul pour l'exécution des scripts est définie dans le `Package-Structure.yml` fichier. Pour les automatismes directs basés sur SSM, ajoutez la ligne suivante après : `MasterFileName` `ComputePlatform: "SSM Automation Document"` 

## Télécharger un nouveau package de script
<a name="upload-new-script-package"></a>

**Note**  
Un package de script doit être conforme au format pris en charge. Reportez-vous à la section [Composer un nouveau package de script](#composing-a-new-script-package) pour plus de détails.

1. Choisissez **Ajouter** dans le tableau **des scripts d'automatisation**.

1. Sélectionnez le fichier d'archive du package que vous souhaitez télécharger.

1. Entrez un nom unique pour le script. Les utilisateurs référenceront le script par ce nom pour lancer des tâches.

## Télécharger des packages de scripts
<a name="download-script-packages"></a>

Vous pouvez télécharger des packages de scripts depuis la console pour activer les mises à jour et la vérification du contenu.

1. Sélectionnez **Automatisation**, puis **Scripts**.

1. Sélectionnez le script que vous souhaitez télécharger dans le tableau, puis sélectionnez **Actions** et choisissez **Télécharger la version par défaut** ou **Télécharger la dernière version**.

Vous pouvez télécharger des versions spécifiques d'un script. Pour ce faire, sélectionnez le script, puis **Actions** et choisissez **Modifier la version par défaut.** Dans la liste des **versions par défaut du script**, choisissez **Télécharger la version sélectionnée**.

## Ajouter une nouvelle version d'un package de script
<a name="add-new-version-of-a-script-package"></a>

Les mises à jour des packages de scripts AWS Cloud Migration Factory peuvent être téléchargées dans la section **Automation** > **Scripts** en suivant ces étapes :

1. Sélectionnez **Automatisation,** puis **Scripts.** 

1. Sélectionnez le script existant pour ajouter une nouvelle version, puis sélectionnez **Actions** et choisissez **Ajouter une nouvelle version**.

1. Sélectionnez le fichier d'archive du package mis à jour que vous souhaitez télécharger, puis choisissez **Next**. La nouvelle version du script conservera le nom existant par défaut. Entrez un nom de script unique. Tout changement de nom ne sera appliqué qu'à cette version du script.

1. Vous pouvez faire de la nouvelle version du script la version par défaut en sélectionnant **Créer la version par défaut**.

1. Choisissez **Charger**.

## Suppression de packages et de versions de scripts
<a name="deleting-script-packages-and-versions"></a>

Vous ne pouvez pas supprimer de scripts ou de versions d'un script à des fins d'audit. Cela permet de vérifier le script exact qui a été exécuté sur un système à un moment donné. Chaque version de script possède une signature et un identifiant uniques lors du téléchargement, qui sont enregistrés par rapport à l'historique des tâches dans lesquelles le script et la version ont été utilisés.

## Composer un nouveau package de script
<a name="composing-a-new-script-package"></a>

Les packages de scripts Cloud Migration Factory sur AWS prennent en charge Python comme langage de script principal. Vous pouvez lancer d'autres langages de script shell selon les besoins à partir d'un programme principal ou d'un wrapper Python. Pour créer rapidement un nouveau package de scripts, nous vous recommandons de télécharger une copie de l'un des scripts préemballés et de le mettre à jour pour effectuer la tâche requise. Vous devez d'abord créer un script Python principal qui exécutera les fonctionnalités principales du script. Créez ensuite un `Package-Structure.yml` fichier pour définir les arguments et les autres métadonnées nécessaires au script. Reportez-vous aux `Package-Structure.yml` options pour plus de détails.

### Script Python principal
<a name="main-python-script"></a>

Il s'agit du script principal initial qui s'exécute lorsqu'une tâche est initiée. Une fois l'exécution du script terminée, la tâche est terminée et le code de retour final détermine le statut de la tâche. Toutes les sorties de ce script sont capturées lorsqu'elles sont exécutées à distance et transmises dans le journal d'audit des sorties de la tâche à des fins de référence. Ce journal est également stocké sur Amazon CloudWatch.

#### Accès à Cloud Migration Factory sur les données AWS et APIs à partir d'un script
<a name="accessing-cloud-migration-factory-on-aws-data-and-apis-from-a-script"></a>

Pour fournir un accès à Cloud Migration Factory sur AWS APIs et aux données, vous pouvez utiliser le module d'assistance python inclus. Le module fournit les principales fonctions. Voici quelques fonctions clés pour démarrer :

 `factory_login` 

Renvoie un jeton d'accès qui peut être utilisé pour appeler Cloud Migration Factory sur AWS APIs. Cette fonction tentera de se connecter à CMF en utilisant un certain nombre de tentatives d'identification :

1. En essayant d'accéder au secret par défaut contenant l'identifiant et le mot de passe du compte de service s'il existe et si l'accès est autorisé. Ce nom secret **MFServiceAccount-`userpool id`]** sera vérifié.

1. Si l'étape 1 échoue et que l'utilisateur exécute le script depuis la ligne de commande, il sera invité à fournir un identifiant et un mot de passe AWS Cloud Migration Factory. Si elle est exécutée à partir d'une tâche d'automatisation distante, la tâche échouera.

 `get_server_credentials` 

Renvoie les informations de connexion d'un serveur stockées dans AWS Cloud Migration Factory soit dans le Credentials Manager, soit via les entrées de l'utilisateur. Cette fonction vérifie un certain nombre de sources différentes afin de déterminer les informations d'identification d'un serveur spécifique. L'ordre des sources est le suivant :

1. Si local\$1username et local\$1password sont définis et valides, ils seront renvoyés.

1. Si secret\$1overide est défini, il sera utilisé pour récupérer le secret spécifié dans AWS Secret Manager. Sinon, si l'enregistrement du serveur contient la clé **secret\$1name et si elle n'est pas vide, c'est ce nom** de secret qui sera utilisé.

1. En cas d'échec lors de la localisation ou de l'accès aux secrets spécifiés, la fonction recommencera à demander à l'utilisateur les informations d'identification, mais uniquement si le paramètre **no\$1user\$1prompts** est défini sur **False**, sinon elle renverra un échec.

 **Paramètres** 

local\$1username - S'il est passé, il sera renvoyé.

local\$1password - S'il est passé, il sera renvoyé.

server : dict du serveur CMF, tel que renvoyé par get\$1factory\$1servers. dans AWS Cloud Migration Factory.

Secret\$1overide - Si cette option est transmise, cela définira le nom du secret à récupérer depuis Secrets Manager pour ce serveur.

No\$1User\$1Prompts - Indique à la fonction de ne pas demander à un utilisateur de saisir un identifiant et un mot de passe s'ils ne sont pas stockés. Cela doit être vrai pour tout script d'automatisation à distance.

 `get_credentials` 

Récupère les informations d'identification stockées à l'aide d'AWS Cloud Migration Factory Credentials Manager à partir de Secrets Manager.

 **Paramètres** 

secret\$1name - nom du secret à récupérer.

get\$1factory\$1servers

Renvoie un tableau de serveurs à partir de la banque de données AWS Cloud Migration Factory en fonction de l'identifiant d'onde fourni.

 **Paramètres** 

waveid - ID d'enregistrement Wave des serveurs qui sera renvoyé.

jeton - Jeton d'authentification obtenu à partir de la FactoryLogin fonction Lambda.

app\$1ids - Liste facultative des identifiants d'applications à inclure dans la vague.

server\$1ids - Liste facultative des identifiants de serveurs dans la vague et des applications à inclure.

os\$1split - Si cette valeur est définie sur`true`, deux listes seront renvoyées, une pour les serveurs Linux et une pour les serveurs Windows, si elle est définie sur False, une seule liste combinée sera renvoyée.

rtype - Chaîne facultative à filtrer uniquement pour une stratégie de migration spécifique de serveurs, c'est-à-dire que le fait de transmettre la valeur « Rehost » ne renverra que les serveurs dotés de Rehost.

#### Résumé du message final
<a name="final-message-summary"></a>

Il est recommandé de fournir un message récapitulatif du résultat du script en tant que sortie finale à l'écran ou à la sortie système. Cela sera affiché sur la console dans la propriété **Last Message**, qui fournit un état rapide du résultat du script sans que l'utilisateur n'ait à lire le journal de sortie complet.

#### Code de retour
<a name="return-code"></a>

Le script python principal doit renvoyer un code de retour différent de zéro à la sortie si la fonction du script n'est pas complètement réussie. À la réception d'un code de retour différent de zéro, le statut de la tâche sera affiché comme **Échec** dans le journal des tâches, indiquant à l'utilisateur qu'il doit consulter le journal de sortie pour obtenir des détails sur l'échec.

### Options de structure de package YAML .yml
<a name="package-structure.yml-options"></a>

#### Exemple de fichier YAML
<a name="example"></a>

```
Name: "0-Check MGN Prerequisites"
Description: "This script will verify the source servers meet the basic requirements for AWS MGN agent installation."
MasterFileName: "0-Prerequisites-checks.py"
UpdateUrl: ""
Arguments:
-
name: "ReplicationServerIP"
description: "Replication Server IP."
long_desc: "IP Address of an AWS MGN Replication EC2 Instance."
type: "standard"
required: true
-
name: "SecretWindows"
long_desc: "Windows Secret to use for credentials."
description: "Windows Secret"
type: "relationship"
rel_display_attribute: "Name"
rel_entity: "secret"
rel_key: "Name"
-
name: "SecretLinux"
long_desc: "Linux Secret to use for credentials."
description: "Linux Secret"
type: "relationship"
rel_display_attribute: "Name"
rel_entity: "secret"
rel_key: "Name"
-
name: "Waveid"
description: "Wave Name"
type: "relationship"
rel_display_attribute: "wave_name"
rel_entity: "wave"
rel_key: "wave_id"
validation_regex: "^(?!\\s*$).+"
validation_regex_msg: "Wave must be provided."
required: true
SchemaExtensions:
-
schema: "server"
name: "server_pre_reqs_output"
description: "Pre-Req Output"
type: "string"
```

#### Descriptions des clés YAML
<a name="keys"></a>

Obligatoire

 **Nom** : nom par défaut que le script utilisera lors de l'importation.

 **Description** : description de l'utilisation du script.

 **MasterFileName**- C'est le point de départ de l'exécution du script. Il doit s'agir d'un nom de fichier python inclus dans l'archive du package du script.

 **Arguments** : liste d'arguments acceptés par le script MasterFileName Python. Chaque argument à spécifier est au format de définition d'attribut AWS Cloud Migration Factory. Les propriétés obligatoires pour chaque argument sont **le nom** et le **type**, toutes les autres propriétés sont facultatives.

Facultatif

 **ComputePlatform**- Cette touche définit l'endroit où le script sera exécuté. Réglez sur « Document d'automatisation SSM » pour s'exécuter directement dans AWS Systems Manager sans serveur d'automatisation. S'il est omis, il est exécuté par défaut sur le serveur d'automatisation.

 **UpdateUrl**- Fournissez une URL où la source du package de script est disponible pour fournir des mises à jour. Pour le moment, c'est uniquement pour référence.

 **SchemaExtensions**- Une liste d'attributs dont le script Python a besoin pour figurer dans le schéma pour stocker la sortie ou récupérer des données supplémentaires. Chaque attribut doit être spécifié dans le format de définition d'attribut AWS CMF. Les propriétés requises pour chaque attribut sont le **schéma**, le **nom, la description** et le **type**. Toutes les autres propriétés sont facultatives. Tous les nouveaux attributs seront automatiquement ajoutés au schéma lors du chargement initial du script, et les modifications apportées ne SchemaExtensions seront pas traitées pour les nouvelles versions du script. Si cela est nécessaire pour qu'un nouveau script soit ajouté, des mises à jour manuelles du schéma doivent être effectuées.