Sviluppa EC2Rescue moduli per istanze Amazon EC2 Linux - Amazon Elastic Compute Cloud

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sviluppa EC2Rescue moduli per istanze Amazon EC2 Linux

I moduli sono scritti inYAML, uno standard di serializzazione dei dati. Il YAML file di un modulo è costituito da un singolo documento, che rappresenta il modulo e i suoi attributi.

Aggiunta di attributi di modulo

Nella tabella seguente vengono elencati gli attributi di modulo disponibili.

Attributo

Descrizione

name

Il nome del modulo. Il nome non deve superare i 18 caratteri.

version

Il numero di versione del modulo.

title

Un breve titolo descrittivo del modulo. Questo valore non deve superare i 50 caratteri.

helptext

La descrizione estesa del modulo. Ogni riga non deve superare i 75 caratteri. Se il modulo consuma argomenti, obbligatori o facoltativi, includili nel valore helptext.

Ad esempio:

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

La fase in cui eseguire il modulo. Valori supportati:

  • prediagnostic

  • run

  • postdiagnostic

linguaggio

Il linguaggio in cui è scritto il codice del modulo. Valori supportati:

  • bash

  • python

Nota

Il codice Python deve essere compatibile con Python 2.7.9 e versioni successive e Python 3.2 e versioni successive.

remediation

Indica se il modulo supporta le azioni di correzione. I valori supportati sono True o False.

Il modulo viene impostato su False per impostazione predefinita se questo valore è assente, rendendo l'attributo facoltativo per i moduli che non supportano le azioni di correzione.

content

L'interezza del codice dello script.

vincolo

Il nome dell'oggetto contenente i valori di vincolo.

domain

Un descrittore del raggruppamento o della classificazione del modulo. L'insieme dei moduli inclusi utilizza i domini seguenti:

  • applicazione

  • net

  • so

  • prestazioni

classe

Un descrittore del tipo di attività effettuato dal modulo. L'insieme dei moduli inclusi utilizza le classi seguenti:

  • collect (raccoglie l'output dai programmi)

  • diagnose (riuscita/errore in base a un insieme di criteri)

  • gather (copia i file e li scrive su un file specifico)

distro

L'elenco delle distribuzioni Linux supportate da questo modulo. Il set di moduli inclusi utilizza le distribuzioni seguenti:

  • alami (Amazon Linux)

  • rhel

  • ubuntu

  • suse

obbligatorio

Gli argomenti richiesti che il modulo utilizza tra le CLI opzioni.

facoltativo

Gli argomenti facoltativi che il modulo può utilizzare.

software

I file eseguibili del software utilizzati nel modulo. Questo attributo è progettato per specificare un software non installato per impostazione predefinita. La logica EC2Rescue per Linux assicura che questi programmi siano presenti ed eseguibili prima di eseguire il modulo.

package

Il pacchetto software di origine di un file eseguibile. Questo attributo ha lo scopo di fornire dettagli estesi sul pacchetto con il software, incluso uno URL strumento per scaricare o ottenere ulteriori informazioni.

sudo

Indica se l'accesso root è obbligatorio per l'esecuzione del modulo.

Non è necessario implementare i controlli sudo nello script del modulo. Se il valore è vero, la logica EC2Rescue for Linux esegue il modulo solo quando l'utente che esegue l'esecuzione ha accesso root.

perfimpact

Indica se il modulo può avere un significativo impatto sulle prestazioni nell'ambiente in cui viene eseguito. Se il valore è true e l'argomento --perfimpact=true non è presente, il modulo viene ignorato.

parallelexclusive

Specifica un programma che richiede reciproca esclusività. Ad esempio, tutti i moduli con la specifica "bpf" vengono eseguiti in modo seriale.

Aggiunta di variabili di ambiente

Nella tabella seguente vengono elencate le variabili di ambiente disponibili.

Variabile di ambiente Descrizione

EC2RL_CALLPATH

Il percorso a ec2rl.py. Questo percorso può essere utilizzato per individuare la directory lib e per utilizzare i moduli Python gestiti da un fornitore.

EC2RL_WORKDIR

La directory tmp principale dello strumento di diagnostica.

Valore predefinito: /var/tmp/ec2rl.

EC2RL_RUNDIR

La directory in cui viene archiviato tutto l'output.

Valore predefinito: /var/tmp/ec2rl/<date&timestamp>.

EC2RL_GATHEREDDIR

La directory root in cui inserire i dati raccolti sul modulo.

Valore predefinito:/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/.

EC2RL_NET_DRIVER

Il driver in uso per la prima interfaccia di rete non virtuale sull'istanza (in ordine alfabetico).

Esempi:

  • xen_netfront

  • ixgbevf

  • ena

EC2RL_SUDO

Vero se EC2Rescue per Linux è in esecuzione come root; in caso contrario, falso.

EC2RL_VIRT_TYPE

Il tipo di virtualizzazione fornito dai metadati dell'istanza.

Esempi:

  • default-hvm

  • default-paravirtual

EC2RL_INTERFACES

Un elenco enumerato delle interfacce sul sistema. Il valore è una stringa contenente nomi, come eth0, eth1 e così via. Viene generato tramite functions.bash ed è disponibile soltanto per i moduli da cui ha avuto origine.

Usa la YAML sintassi

Quando si costruiscono i file del moduloYAML, è necessario tenere presente quanto segue:

  • I trattini tripli (---) denotano l'inizio esplicito di un documento.

  • Il !ec2rlcore.module.Module tag indica al YAML parser quale costruttore chiamare quando si crea l'oggetto dal flusso di dati. È possibile trovare il costruttore nel file module.py.

  • Il !!str tag indica al YAML parser di non tentare di determinare il tipo di dati e di interpretare invece il contenuto come una stringa letterale.

  • Il carattere pipe (|) indica al YAML parser che il valore è uno scalare in stile letterale. In questo caso, il parser include tutti gli spazi vuoti. Ciò è importante per i moduli perché vengono mantenuti i caratteri di rientro e nuova riga.

  • Il rientro YAML standard è composto da due spazi, come si può vedere negli esempi seguenti. Assicurati di mantenere il rientro standard (ad esempio, quattro spazi per Python) nello script e di far rientrare di due spazi tutto il contenuto all'interno del file del modulo.

Moduli di esempio

Esempio uno (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