Desarrollo de módulos de EC2Rescue para instancias de Linux de Amazon EC2
Los módulos se escriben en YAML, un estándar de serialización de datos. Un archivo YAML de un módulo consta de un único documento que representa el módulo y sus atributos.
Agregar atributos de módulo
En la tabla siguiente se muestran los atributos de módulo disponibles.
Atributo |
Descripción |
---|---|
name (nombre) |
Nombre del módulo. El nombre debe tener 18 caracteres o menos de longitud. |
version |
Número de versión del módulo. |
title |
Un título breve y descriptivo para el módulo. Este valor debe tener 50 caracteres o menos de longitud. |
helptext |
La descripción ampliada del módulo. Cada línea debe tener 75 caracteres o menos de longitud. Si el módulo consume argumentos, requeridos y opcionales, inclúyalos en el valor de helptext. Por ejemplo:
|
placement |
La fase en la que debe ejecutarse el módulo. Valores admitidos:
|
language |
El lenguaje en que está escrito el código del módulo. Valores admitidos:
notaEl código Python debe ser compatible con Python 2.7.9+ y Python 3.2+. |
remediation |
Indica si el módulo admite remedio. Los valores admitidos son El módulo tomará el valor predeterminado |
content |
La totalidad del código de script. |
constraint |
El nombre del objeto que contiene los valores de restricción. |
dominio |
Un descriptor del modo en que el módulo se agrupa o clasifica. El conjunto de módulos incluidos usa los dominios siguientes:
|
class |
Un descriptor del tipo de tarea que realiza el módulo. El conjunto de módulos incluidos usa las clases siguientes:
|
distro |
La lista de distribuciones Linux que admite este módulo. El conjunto de módulos incluidos usa las distribuciones siguientes:
|
obligatorio |
Los argumentos requeridos que el módulo usa para las opciones de la CLI. |
opcional |
Los argumentos opcionales que el módulo puede usar. |
software |
Los ejecutables de software usados en el módulo. Este atributo tiene como finalidad especificar software que no está instalado de manera predeterminada. La lógica de EC2Rescue para Linux asegura que estos programas sean ejecutables y estén presentes antes de ejecutar el módulo. |
package |
El paquete de software de origen para un ejecutable. Este atributo tiene como finalidad proporcionar detalles ampliados sobre el paquete con el software, incluida una URL para descargar u obtener más información. |
sudo |
Indica si se requiere acceso raíz para ejecutar el módulo. No necesita implementar las comprobaciones sudo en el script del módulo. Si el valor es verdadero, la lógica de EC2Rescue para Linux solo ejecuta el módulo cuando el usuario ejecutante tiene acceso raíz. |
perfimpact |
Indica si el módulo puede tener un impacto significativo de desempeño en el entorno en que se ejecuta. Si el valor es verdadero y el argumento |
parallelexclusive |
Especifica un programa que requiere exclusividad mutua. Por ejemplo, todos los módulos que especifican "bpf" se ejecutan en serie. |
Agregar variables de entorno
En la tabla siguiente se muestran las variables de entorno disponibles.
Variable de entorno | Descripción |
---|---|
|
La ruta a ec2rl.py . Esta ruta se puede usar para ubicar el directorio lib y usar los módulos de Python proporcionados. |
|
El directorio tmp principal de la herramienta de diagnóstico. Valor predeterminado: |
|
El directorio donde se almacenan todos los resultados. Valor predeterminado: |
|
El directorio raíz donde se colocan los datos recopilados del módulo. Valor predeterminado: |
|
El controlador en uso para la primera interfaz de red no virtual en orden alfabético en la instancia. Ejemplos:
|
|
Es verdadero si EC2Rescue para Linux se ejecuta como raíz; de lo contrario, es falso. |
|
El tipo de virtualización según lo proporcionan los metadatos de la instancia. Ejemplos:
|
|
Una lista numerada de interfaces en el sistema. El valor es una cadena que contiene nombres como |
Usar sintaxis YAML
Cuando se construyen los archivos YAML de un módulo, se debe tener en cuenta lo siguiente:
-
Tres guiones (
---
) denotan el inicio explícito de un documento. -
La etiqueta
!ec2rlcore.module.Module
dice al analizador YAML a qué constructor llamar cuando se crea el objeto del flujo de datos. Encontrará el constructor dentro del archivomodule.py
. -
La etiqueta
!!str
indica al analizador YAML que no intente determinar el tipo de datos y que interprete el contenido como un literal de cadena. -
El carácter
|
indica al analizador YAML que el valor es un escalar de estilo literal. En este caso, el analizador incluye todos los espacios en blanco. Esto es importante para los módulos porque se mantienen la sangría y los caracteres de nueva línea. -
La sangría estándar de YAML son dos espacios, como se puede ver en los ejemplos siguientes. Asegúrese de que mantiene la sangría estándar (por ejemplo, cuatro espacios para Python) para el script y después sangría de dos espacios para todo el contenido en el archivo del módulo.
Módulos de ejemplo
Ejemplo 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