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.
Développez des modules EC2 Rescue pour les instances Amazon EC2 Linux
Les modules sont écrits en YAML, une norme de sérialisation des données. Le fichier YAML d’un module se compose d’un document unique, qui représente le module et ses attributs.
Ajouter des attributs de module
Le tableau suivant répertorie les attributs de module disponibles.
Attribut |
Description |
---|---|
name |
Nom du module. La longueur du nom doit être inférieure ou égale à 18 caractères. |
Version |
Numéro de version du module. |
title |
Titre court et descriptif du module. La longueur de cette valeur doit être inférieure ou égale à 50 caractères. |
helptext |
Description étendue du module. La longueur de chaque ligne doit être inférieure ou égale à 75 caractères. Si le module consomme des arguments, obligatoires ou facultatifs, incluez-les dans la valeur helptext. Exemples :
|
placement |
Étape dans laquelle le module doit être exécuté. Valeurs prises en charge :
|
langage |
Langage dans lequel le code du module est écrit. Valeurs prises en charge :
NoteLe code Python doit être compatible avec Python 2.7.9+ et Python 3.2+. |
remediation |
Indique si le module prend en charge la correction. Les valeurs prises en charge sont Le module utilise par défaut |
content |
Intégralité du code de script. |
contrainte |
Nom de l’objet contenant les valeurs de contrainte. |
domaine |
Descripteur de la façon dont le module est regroupé ou classé. L’ensemble de modules inclus utilise les domaines suivants :
|
class |
Descripteur du type de tâche effectué par le module. L’ensemble de modules inclus utilise les classes suivantes :
|
distro |
Liste des distributions Linux que ce module prend en charge. L’ensemble de modules inclus utilise les distributions suivantes :
|
obligatoire |
Arguments obligatoires que le module consomme à partir des options de la CLI. |
facultatif |
Arguments facultatifs que le module peut utiliser. |
logiciel |
Exécutables logiciels utilisés dans le module. Cet attribut a pour but de spécifier un logiciel qui n’est pas installé par défaut. La logique EC2 Rescue for Linux garantit que ces programmes sont présents et exécutables avant d'exécuter le module. |
package |
Package logiciel source pour un exécutable. Cet attribut a pour but de fournir des détails étendus sur le package avec le logiciel, y compris une URL pour le téléchargement ou pour obtenir de plus amples informations. |
sudo |
Indique si l’accès racine est obligatoire pour exécuter le module. Vous n’avez pas besoin d’implémenter des vérifications sudo dans le script du module. Si la valeur est vraie, la logique EC2 Rescue for Linux n'exécute le module que lorsque l'utilisateur exécutant dispose d'un accès root. |
perfimpact |
Indique si le module peut avoir un impact important sur les performances qui affecte l’environnement dans lequel il est exécuté. Si la valeur est true et que l’argument |
parallelexclusive |
Spécifie un programme qui requiert une exclusivité mutuelle. Par exemple, tous les modules qui spécifient « bpf » sont exécutés en série. |
Ajouter des variables d’environnement
Le tableau suivant répertorie les variables d’environnement disponibles.
Variable d’environnement | Description |
---|---|
|
Chemin vers ec2rl.py . Ce chemin peut être utilisé pour localiser le répertoire lib et utiliser les modules Python fournis. |
|
Répertoire tmp principal pour l’outil de diagnostic. Valeur par défaut: |
|
Répertoire dans lequel toutes les sorties sont stockées. Valeur par défaut: |
|
Répertoire racine dans lequel placer les données collectées sur le module. Valeur par défaut: |
|
Pilote utilisé pour la première interface réseau non virtuelle, triée par ordre alphabétique, de l’instance. Exemples :
|
|
True si EC2 Rescue for Linux est exécuté en tant que root ; sinon, faux. |
|
Type de virtualisation, tel que fourni par les métadonnées d’instance. Exemples :
|
|
Liste énumérée des interfaces du système. La valeur est une chaîne contenant des noms, tels que |
Utiliser la syntaxe YAML
Tenez compte des points suivants lorsque vous créez vos fichiers YAML de module :
-
Le triple trait d’union (
---
) indique le début explicite d’un document. -
La balise
!ec2rlcore.module.Module
indique à l’analyseur YAML le constructeur à appeler lors de la création de l’objet à partir du flux de données. Vous trouverez le constructeur dans le fichiermodule.py
. -
La balise
!!str
indique à l’analyseur YAML de ne pas tenter de déterminer le type des données, et d’interpréter plutôt le contenu comme un littéral de chaîne. -
Le caractère pipe (
|
) indique à l’analyseur YAML que la valeur est une scalaire littérale. Dans ce cas, l’analyseur inclut tous les espaces. C’est important pour les modules car les caractères de mise en retrait et de saut de ligne sont conservés. -
La mise en retrait standard YAML correspond à deux espaces, comme illustré dans les deux exemples suivants. Veillez à conserver la mise en retrait standard (par exemple, quatre espaces pour Python) pour votre script, puis mettez en retrait l’intégralité du contenu à l’aide de deux espaces dans le fichier du module.
Exemples de modules
Example un (mod.d/ps.yaml
):
--- !ec2rlcore.module.Module # Module document. Translates directly into an almost-complete Module object name: !!str ps path: !!str version: !!str 1.0 title: !!str Collect output from ps for system analysis helptext: !!str | Collect output from ps for system analysis Requires --times= for number of times to repeat Requires --period= for time period between repetition placement: !!str run package: - !!str language: !!str bash content: !!str | #!/bin/bash error_trap() { printf "%0.s=" {1..80} echo -e "\nERROR: "$BASH_COMMAND" exited with an error on line ${BASH_LINENO[0]}" exit 0 } trap error_trap ERR # read-in shared function source functions.bash echo "I will collect ps output from this $EC2RL_DISTRO box for $times times every $period seconds." for i in $(seq 1 $times); do ps auxww sleep $period done constraint: requires_ec2: !!str False domain: !!str performance class: !!str collect distro: !!str alami ubuntu rhel suse required: !!str period times optional: !!str software: !!str sudo: !!str False perfimpact: !!str False parallelexclusive: !!str