

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# EC2Rescue-Module für Amazon-EC2-Linux-Instances entwickeln
<a name="ec2rl_moduledev"></a>

Module werden in YAML geschrieben, einem Datenserialisierungsstandard. Die YAML-Datei für ein Modul besteht aus einem einzigen Dokument für die Beschreibung des Moduls und seiner Attribute.

## Hinzufüge von Modulattributen
<a name="ec2rl-adding-modules"></a>

In der folgenden Tabelle werden die verfügbaren Modulattribute aufgeführt.


| Attribut | Beschreibung | 
| --- | --- | 
| name | Der Name des Moduls. Die Länge des Namens sollte höchstens 18 Zeichen betragen. | 
| Version | Die Versionsnummer des Moduls | 
| Titel | Eine kurze, aussagekräftige Beschreibung des Moduls. Die Länge dieses Werts sollte höchstens 50 Zeichen betragen. | 
| helptext |  Die ausführliche Beschreibung des Moduls. Die Länge jeder Zeile sollte höchstens 75 Zeichen betragen. Wenn das Modul mit (obligatorischen oder optionalen) Argumenten aufgerufen wird, sollten sie in dem helptext-Wert einhalten sein. Beispiel: <pre>helptext: !!str |<br />  Collect output from ps for system analysis<br />  Consumes --times= for number of times to repeat<br />  Consumes --period= for time period between repetition</pre> | 
| placement | Die Stufe, in der das Modul ausgeführt werden sollte. Unterstützte Werte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
| language | Die Sprache, in der das Modul geschrieben wurde. Unterstützte Werte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  Python-Code muss sowohl mit Python 2.7.9\$1 als auch mit Python 3.2\$1 kompatibel sein.   | 
| remediation |  Zeit an, ob das Modul eine Problembehebung unterstützt. Unterstützte Werte sind `True` oder `False`. Das Modul ist standardmäßig `False`, wenn diese Angabe fehlt, womit sie zu einem optionalen Attribut für Module wird, die keine Problembehebung unterstützen.  | 
| content | Der gesamte Code für das Skript. | 
| constraint | Der Name des Objekts, das Werte für die Beschränkung enthält. | 
| Domain | Eine Beschreibung, wie das Modul gruppiert oder klassifiziert wird. Die enthaltenen Module verwenden die folgenden Bereiche:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| class | Eine Beschreibung der Aufgabe, die von dem Modul durchgeführt wird. Die enthaltenen Module verwenden die folgenden Klassen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| distro | Die Liste der Linux-Distributionen, die dieses Modul unterstützt. Die enthaltenen Module verwenden die folgenden Distributionen: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| Erforderlich | Die obligatorischen Argumente für den Aufruf des Moduls mit dem CLI. | 
| optional | Die optionalen Argumente für den Aufruf des Moduls. | 
| software | Die ausführbare Software, die in dem Modul verwendet wird. Dieses Attribut dient der Spezifikation von Software, die nicht standardmäßig installiert ist. Die Logik von EC2 Rescue for Linux stellt sicher, dass diese Programme vorhanden und ausführbar sind, bevor das Modul ausgeführt wird. | 
| package | Das Quellcode-Paket für eine ausführbare Software. Dieses Attribut dient der Spezifikation ausführlicher Details zu dem Softwarepaket, einschließlich einer URL, unter der weitere Informationen heruntergeladen oder abgerufen werden können. | 
| sudo | Zeigt an, ob für die Ausführung des Moduls Root-Berechtigungen erforderlich sind.  Sie müssen keine sudo-Checks in dem Skript für das Modul implementieren. Wenn der Wert true ist, führt die EC2 Rescue for Linux-Logik das Modul nur aus, wenn der ausführende Benutzer Root-Zugriff hat. | 
| perfimpact | Zeigt an, ob das Modul signifikante Auswirkungen auf die Leistung in der Umgebung haben kann, in der es ausgeführt wird. Wenn dieser Wert auf „true” gesetzt und das `--perfimpact=true`-Argument nicht aufgerufen wird, dann wird das Modul übersprungen. | 
| parallelexclusive | Spezifiziert ein Programm, dass gegenseitige Exklusivität erfordert. So können z. B. alle Module, für die hier „bpf” angegeben wird, nur nacheinander ausgeführt werden. | 

## Hinzufügen von Umgebungsvariablen
<a name="ec2rl_adding_envvars"></a>

In der folgenden Tabelle werden die verfügbaren Umgebungsvariablen aufgeführt.


| Umgebungsvariable | Beschreibung | 
| --- | --- | 
|  `EC2RL_CALLPATH`  | Der Pfad zu ec2rl.py. Anhand dieses Pfades können Sie das Lib-Verzeichnis finden und von Anbietern bereitgestellte Python-Module benutzen. | 
|  `EC2RL_WORKDIR`  |  Das primäre temporäre Verzeichnis für das Diagnosetool Standardwer: `/var/tmp/ec2rl`. | 
|  `EC2RL_RUNDIR`  |  Das Verzeichnis, in dem alle Ausgaben gespeichert werden Standardwer: `/var/tmp/ec2rl/<date&timestamp>`.  | 
|  `EC2RL_GATHEREDDIR`  |  Das Stammverzeichnis für die erfassten Moduldaten Standardwer:`/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/`.  | 
|  `EC2RL_NET_DRIVER`  |  Der Treiber für die erste, alphabetisch sortierte, nicht virtuelle Netzwerkschnittstelle in der Instance Beispiele: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_SUDO`  |  Wahr, wenn EC2 Rescue for Linux als Root-Benutzer ausgeführt wird; andernfalls False.  | 
|  `EC2RL_VIRT_TYPE`  |  Der Virtualisierungstyp gemäß der bereitgestellten Instance-Metadaten Beispiele: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_INTERFACES`  |  Eine nummerierte List der Schnittstellen in dem System. Der Wert besteht aus einer Zeichenfolge, die Namen wie `eth0`, `eth1` usw. enthält. Er wird über `functions.bash` generiert und ist nur für Module verfügbar, die diese aufgerufen haben.  | 

## Verwenden des YAML-Syntax
<a name="ec2rl_yamlsyntax"></a>

Beachten Sie unbedingt die folgenden Punkte, wenn Sie die YAML-Dateien für ein Modul erstellen:
+ Drei Bindestriche hintereinander (`---`) zeigen den Beginn eines Dokuments explizit an.
+ Der Tag `!ec2rlcore.module.Module` zeigt dem YAML-Parser an, welcher Konstruktor aufgerufen werden soll, um das Objekt aus dem Datenstrom zu erstellen. Sie finden den Konstruktor in der Datei `module.py`.
+ Der Tag `!!str` weist den YAML-Parser an, keinen Versuch zur Bestimmung des Datentyps zu unternehmen, sondern den Inhalt als Zeichenfolgeliteral zu interpretieren.
+ Das Pipe-Zeichen (`|`) zeigt dem YAML-Parser an, dass es sich um einen skalaren Wert handelt – ähnlich einem Literal. In diesem Fall übernimmt der Parser alle Leerraumzeichen. Dies ist im Zusammenhang mit Modulen sehr wichtig, da Einrückungen und Zeilenumbrüche erhalten bleiben.
+ Die Standardeinrückung in YAML besteht aus zwei Leerzeichen, wie in den folgenden Beispielen gezeigt. Stellen Sie sicher, dass Sie in Ihrem Skript mit den jeweiligen Standard-Einrückungen arbeiten (z. B. vier Leerzeichen in Python) und den gesamten Inhalt anschließend in der Moduldatei um zwei Leerzeichen einrücken.

## Beispielmodule
<a name="ec2rl_example"></a>

Beispiel 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
```