本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 Amazon EC2 Linux 執行個體開發EC2Rescue模組
模塊被寫入YAML,一個數據序列化標準。一個模塊的YAML文件由一個單一的文檔,代表模塊及其屬性。
新增模組屬性
下表列出可用的模組屬性。
屬性 |
描述 |
---|---|
name |
模組的名稱。此名稱長度應小於或等於 18 個字元。 |
version |
模組的版本編號。 |
title |
模組的簡述標題。此值長度應小於或等於 50 個字元。 |
helptext |
模組的延伸描述。各行長度應小於或等於 75 個字元。如果模組使用引數 (無論必要或選用),請以 helptext 值包含它們。 例如:
|
placement |
應該執行模組的階段。支援的值為:
|
語言 |
撰寫模組程式碼的語言。支援的值為:
注意Python 程式碼必須與 Python 2.7.9+ 和 Python 3.2+ 都相容。 |
remediation |
指出模組是否支援修補。支援的值為 如果無此屬性,模組將預設為 |
content |
完整的指令碼程式碼。 |
限制條件 |
包含限制值的物件名稱。 |
domain |
說明模組如何分組或分類的描述項。包含的模組集使用下列網域:
|
class |
模組執行的任務類型描述項。包含的模組集使用下列類別:
|
distro |
此模組支援的 Linux 發行版本清單。包含的模組集使用下列發行版本:
|
必要 |
模組從CLI選項中使用的必要引數。 |
選擇性 |
模組可以使用的選用引數。 |
software |
在模組中使用的軟體可執行檔。此屬性旨在指定非預設安裝的軟體。EC2Rescuefor Linux 邏輯可確保這些程式在執行模組之前存在且可執行。 |
package |
可執行檔的來源軟體套件。此屬性旨在提供軟體套件的延伸詳細資訊,包括下載或取得進一URL步資訊。 |
sudo |
指出是否一定要有根存取才能執行模組。 您不必在模組指令碼中實作 sudo 檢查。如果值為 true,那麼 EC2Rescue for Linux 邏輯僅在執行中的使用者具有 root 存取權限時才會執行模組。 |
perfimpact |
指出模組是否會顯著影響其執行所在環境的效能。如果此值為 true 且無 |
parallelexclusive |
指定需要互斥的程式。例如,所有指定 "bpf" 的模組都依序執行。 |
新增環境變數
下表列出可用的環境變數。
環境變數 | 描述 |
---|---|
|
ec2rl.py 的路徑。此路徑可用以尋找 lib 目錄及使用經過廠商處理的 Python 模組。 |
|
診斷工具的主要 tmp 目錄。 預設值: |
|
存放所有輸出的目錄。 預設值: |
|
放置所收集模組資料的根目錄。 預設值: |
|
執行個體上按字母順序第一個非虛擬網路界面使用的驅動程式。 範例:
|
|
如果 Linux 是以根使EC2Rescue用者身分執行,則為 true;否則為 false。 |
|
如執行個體中繼資料所提供的虛擬化類型。 範例:
|
|
系統上的界面列舉清單。值是包含名稱的字串,例如 |
使用YAML語法
構建模塊YAML文件時應注意以下內容:
-
三個連字號 (
---
) 表示文件的明確開頭。 -
該
!ec2rlcore.module.Module
標籤告訴YAML解析器從數據流創建對象時調用哪個構造函數。您可於module.py
檔案中找到建構函數。 -
該
!!str
標籤告訴解YAML析器不要嘗試確定數據的類型,而是將內容解釋為字符串文字。 -
管道字符(
|
)告訴YAML解析器該值是一個文字樣式的標量。在本例中,剖析器包含所有空格。這對模組而言很重要,因為會保留縮排和換行字元。 -
標YAML準縮排是兩個空格,可以在下面的例子中看到。請確定您的指令碼保持標準縮排 (例如,Python 四格),然後在模組檔案中將完整內容縮排兩格。
範例模組
範例一 (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