Développez EC2Rescue des modules pour les instances Amazon EC2 Linux - 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éveloppez EC2Rescue des modules pour les instances Amazon EC2 Linux

Les modules sont écrits dans YAML une norme de sérialisation des données. Le YAML fichier d'un module se compose d'un seul document représentant 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

Les arguments requis que le module consomme à partir des CLI options.

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 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 est destiné à fournir des informations détaillées sur le package contenant le logiciel, y compris un outil URL permettant de télécharger ou d'obtenir des informations supplémentaires.

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 EC2Rescue pour 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 --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 for Linux est exécuté en tant que root ; sinon, faux.

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 YAML la syntaxe

Les points suivants doivent être pris en compte lors de la construction de vos YAML fichiers de module :

  • Le triple trait d'union (---) indique le début explicite d'un document.

  • La !ec2rlcore.module.Module balise indique à l'YAMLanalyseur quel 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 !!str balise indique à l'YAMLanalyseur de ne pas tenter de déterminer le type de données, mais d'interpréter le contenu comme une chaîne littérale.

  • Le caractère pipe (|) indique à l'YAMLanalyseur que la valeur est un scalaire de style littéral. 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.

  • Le retrait YAML standard est constitué de deux espaces, comme le montrent les 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