Entwickeln Sie EC2Rescue Module für Amazon EC2 Linux-Instances - Amazon Elastic Compute Cloud

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.

Entwickeln Sie EC2Rescue Module für Amazon EC2 Linux-Instances

Module sind in YAML einem Datenserialisierungsstandard geschrieben. Die YAML Datei eines Moduls besteht aus einem einzigen Dokument, das das Modul und seine Attribute darstellt.

Hinzufüge von Modulattributen

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:

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

Die Stufe, in der das Modul ausgeführt werden sollte. Unterstützte Werte:

  • prediagnostic

  • run

  • postdiagnostic

language

Die Sprache, in der das Modul geschrieben wurde. Unterstützte Werte:

  • bash

  • python

Anmerkung

Python-Code muss sowohl mit Python 2.7.9+ als auch mit Python 3.2+ 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:

  • Anwendung

  • net

  • os

  • Leistung

class

Eine Beschreibung der Aufgabe, die von dem Modul durchgeführt wird. Die enthaltenen Module verwenden die folgenden Klassen:

  • collect (erfasste die Ausgabe von Programmen)

  • diagnose (bestanden/durchgefallen auf Basis einer Reihe von Kriterien)

  • gather (kopiert Dateien und schriebt in bestimmte Dateien)

distro

Die Liste der Linux-Distributionen, die dieses Modul unterstützt. Die enthaltenen Module verwenden die folgenden Distributionen:

  • alami (Amazon Linux)

  • rhel

  • ubuntu

  • suse

Erforderlich

Die erforderlichen Argumente, die das Modul aus den CLI Optionen verwendet.

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 EC2Rescue für 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 dazu, erweiterte Informationen über das Paket mit der Software bereitzustellen, einschließlich Informationen URL zum Herunterladen oder Abrufen weiterer Informationen.

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 wahr ist, führt die Logik EC2Rescue für Linux 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

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:

  • xen_netfront

  • ixgbevf

  • ena

EC2RL_SUDO

Wahr, wenn EC2Rescue für Linux als Root ausgeführt wird; andernfalls False.

EC2RL_VIRT_TYPE

Der Virtualisierungstyp gemäß der bereitgestellten Instance-Metadaten

Beispiele:

  • default-hvm

  • default-paravirtual

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 Sie die YAML Syntax

Folgendes sollte bei der Erstellung Ihrer YAML Moduldateien beachtet werden:

  • Drei Bindestriche hintereinander (---) zeigen den Beginn eines Dokuments explizit an.

  • Das !ec2rlcore.module.Module Tag teilt dem YAML Parser mit, welchen Konstruktor er aufrufen soll, wenn er das Objekt aus dem Datenstrom erstellt. Sie finden den Konstruktor in der Datei module.py.

  • Das !!str Tag weist den YAML Parser an, nicht zu versuchen, den Datentyp zu ermitteln, sondern den Inhalt stattdessen als Zeichenkettenliteral zu interpretieren.

  • Das Pipezeichen (|) teilt dem YAML Parser mit, dass es sich bei dem Wert um einen Skalar im Literalstil handelt. In diesem Fall übernimmt der Parser alle Leerraumzeichen. Dies ist im Zusammenhang mit Modulen sehr wichtig, da Einrückungen und Zeilenumbrüche erhalten bleiben.

  • Der YAML Standardeinzug besteht aus zwei Leerzeichen, was in den folgenden Beispielen zu sehen ist. 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

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