Développer des modules EC2Rescue - Amazon Elastic Compute Cloud

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évelopper des modules EC2Rescue

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 :

helptext: !!str | Collect output from ps for system analysis Consumes --times= for number of times to repeat Consumes --period= for time period between repetition

placement

Étape dans laquelle le module doit être exécuté. Valeurs prises en charge :

  • prediagnostic

  • run

  • postdiagnostic

langage

Langage dans lequel le code du module est écrit. Valeurs prises en charge :

  • bash

  • python

Note

Le 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 True ou False.

Le module utilise par défaut False si aucune valeur n'est indiquée. Il s'agit donc d'un attribut facultatif pour les modules qui ne prennent pas en charge la correction.

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 :

  • application

  • net

  • os

  • performances

class

Descripteur du type de tâche effectué par le module. L'ensemble de modules inclus utilise les classes suivantes :

  • collect (collecte la sortie des programmes)

  • diagnose (réussite/échec en fonction d'un ensemble de critères)

  • gather (copie les fichiers et écrit dans un fichier spécifique)

distro

Liste des distributions Linux que ce module prend en charge. L'ensemble de modules inclus utilise les distributions suivantes :

  • alami (Amazon Linux)

  • rhel

  • ubuntu

  • suse

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 EC2Rescue pour Linux s'assure que ces programmes sont présents et exécutables avant l'exécution du 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 true, la logique EC2Rescue pour Linux exécute uniquement le module lorsque l'utilisateur qui exécute le module possède un accès racine.

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 --perfimpact=true n'est pas présent, le module est ignoré.

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

EC2RL_CALLPATH

Chemin vers ec2rl.py. Ce chemin peut être utilisé pour localiser le répertoire lib et utiliser les modules Python fournis.

EC2RL_WORKDIR

Répertoire tmp principal pour l'outil de diagnostic.

Valeur par défaut: /var/tmp/ec2rl.

EC2RL_RUNDIR

Répertoire dans lequel toutes les sorties sont stockées.

Valeur par défaut: /var/tmp/ec2rl/<date&timestamp>.

EC2RL_GATHEREDDIR

Répertoire racine dans lequel placer les données collectées sur le module.

Valeur par défaut:/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/.

EC2RL_NET_DRIVER

Pilote utilisé pour la première interface réseau non virtuelle, triée par ordre alphabétique, de l'instance.

Exemples :

  • xen_netfront

  • ixgbevf

  • ena

EC2RL_SUDO

True si EC2Rescue pour Linux est en cours d'exécution en tant que racine ; sinon la valeur est false.

EC2RL_VIRT_TYPE

Type de virtualisation, tel que fourni par les métadonnées d'instance.

Exemples :

  • default-hvm

  • default-paravirtual

EC2RL_INTERFACES

Liste énumérée des interfaces du système. La valeur est une chaîne contenant des noms, tels que eth0, eth1, etc. Elle est générée via functions.bash et est disponible uniquement pour les modules dont elle provient.

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 fichier module.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