Desenvolver módulos do EC2Rescue para instâncias do Amazon EC2 no Linux
Os módulos são gravados em YAML, um padrão de serialização de dados. O arquivo YAML de um módulo consiste em um único documento, representando o módulo e seus atributos.
Adicionar atributos de módulo
A tabela a seguir lista os atributos de módulo disponíveis.
Atributo |
Descrição |
---|---|
name |
O nome do módulo. O nome precisa ter 18 caracteres ou menos. |
versão |
O número da versão do módulo. |
title |
Um título curto e descritivo para o módulo. Esse valor precisa ter 50 caracteres ou menos. |
helptext |
A descrição estendida do módulo. Cada linha precisa ter 75 caracteres ou menos. Se o módulo utilizar argumentos, obrigatórios ou opcionais, inclua-os no valor helptext. Por exemplo:
|
posicionamento |
O estágio no qual o módulo deve ser executado. Valores com suporte:
|
linguagem |
A linguagem em que o código do módulo está escrito. Valores com suporte:
notaO código Python deve ser compatível com o Python 2.7.9+ e o Python 3.2+. |
correção |
Indica se o módulo dá suporte a correão. Os valores compatíveis são Os padrões do módulo de |
conteúdo |
A totalidade do código do script. |
restrição |
O nome do objeto que contém os valores de limite. |
domínio |
Um descritor de como o módulo é agrupado ou classificado. O conjunto de módulos incluídos usa os seguintes domínios:
|
classe |
Um descritor do tipo da tarefa executada pelo módulo. O conjunto de módulos incluídos usa as seguintes classes:
|
distro |
A lista de distribuições Linux às quais esse módulo oferece suporte. O conjunto de módulos usa as seguintes distribuições:
|
obrigatório |
Os argumentos necessários que o módulo está consumindo das opções de CLI. |
opcional |
Os argumentos opcionais que o módulo pode usar. |
software |
Os executáveis de software usados no módulo. Esse atributo deve especificar o software que não é instalado por padrão. A lógica do EC2Rescue para Linux garante que esses programas estejam presentes e executáveis antes de executar o módulo. |
pacote |
O pacote de software de origem para um executável. Esse atributo deve fornecer detalhes estendidos sobre o pacote com o software, incluindo uma URL para fazer download ou obter mais informações. |
sudo |
Indica se o acesso raiz é necessário para executar o módulo. Não é necessário implementar verificações sudo no script do módulo. Se o valor for verdadeiro, a lógica do EC2Rescue para Linux só executará o módulo quando o usuário que estiver executando tiver acesso raiz. |
perfimpact |
Indica se o módulo pode ter impacto significativo no desempenho no ambiente no qual ele está sendo execução. Se o valor for verdadeiro e o argumento |
parallelexclusive |
Especifica um programa que exija exclusividade mútua. Por exemplo, todos os módulos que especificam "bpf" executados de maneira serial. |
Adicionar variáveis de ambiente
A tabela a seguir lista as variáveis de ambiente disponíveis.
Variável de ambiente | Descrição |
---|---|
|
O caminho para ec2rl.py . Esse caminho pode ser usado para encontrar o diretório lib e utilizar os módulos Python do fornecedor. |
|
O diretório tmp principal para a ferramenta de diagnóstico. Valor padrão: |
|
O diretório no qual a saída é armazenada. Valor padrão: |
|
O diretório raiz para colocar os dados de módulo reunidos. Valor padrão: |
|
O driver em uso na primeira interface de rede não virtual, ordenada alfabeticamente, na instância. Exemplos:
|
|
Verdadeiro se EC2Rescue para Linux estiver em execução como raiz; caso contrário, falso. |
|
O tipo de virtualização conforme fornecido pelos metadados da instância. Exemplos:
|
|
Uma lista enumerada de interfaces no sistema. O valor é uma string que contém nomes, como |
Usar sintaxe de YAML
Os seguintes itens devem ser observados ao construir os arquivos YAML do módulo:
-
O hífen triplo (
---
) denota o início explícito de um documento. -
A tag
!ec2rlcore.module.Module
indica para o analisador YAML qual construtor chamar ao criar o objeto do fluxo de dados. Você pode localizar o construtor no arquivomodule.py
. -
A tag
!!str
diz para o analisador YAML não tentar determinar o tipo de dados e, em vez disso, interpretar o conteúdo como um literal de string. -
O caractere pipe (
|
) informa ao analisador YAML que o valor é um escalar de estilo literal. Nesse caso, o analisador inclui todos os espaços em branco. É importante para os módulos porque o recuo e os caracteres de nova linha são mantidos. -
O recuo padrão YAML é dois espaços, que podem ser vistos nos exemplos a seguir. Certifique-se de manter o recuo padrão (por exemplo, quatro espaços para Python) para o script e, em seguida, defina o recuo de dois espaços para todo o conteúdo no arquivo do módulo.
Exemplos de módulos
Exemplo 1 (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