Mengembangkan EC2Rescue modul untuk instans Amazon EC2 Linux - Amazon Elastic Compute Cloud

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengembangkan EC2Rescue modul untuk instans Amazon EC2 Linux

Modul ditulis dalamYAML, standar serialisasi data. YAMLFile modul terdiri dari satu dokumen, yang mewakili modul dan atributnya.

Menambahkan atribut modul

Tabel berikut menjelaskan atribut modul yang tersedia.

Atribut

Deskripsi

nama

Nama modul. Nama harus berisi 18 karakter atau kurang.

version

Nomor versi modul.

title

Judul singkat dan deskriptif untuk modul. Panjang judul harus berisi 50 karakter atau kurang.

helptext

Deskripsi modul yang lebih panjang. Setiap baris harus berisi 75 karakter atau kurang. Jika modul menggunakan argumen, yang bersifat wajib atau opsional, sertakan argumen tersebut dalam nilai teks bantuan.

Misalnya:

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

Tahap ketika modul harus dijalankan. Nilai yang didukung:

  • prediagnostic

  • run

  • postdiagnostic

language

Bahasa yang digunakan untuk menuliskan kode modul. Nilai yang didukung:

  • bash

  • python

catatan

Kode Python harus kompatibel dengan Python 2.7.9+ maupun Python 3.2+.

remediation

Menunjukkan apakah modul mendukung remediasi. Nilai yang didukung adalah True atau False.

Secara default, modul menjadi False jika hal ini tidak ada, sehingga membuatnya menjadi atribut opsional untuk modul yang tidak mendukung remediasi.

content

Keseluruhan kode skrip.

constraint

Nama objek yang berisi nilai kendala.

domain

Penjelasan tentang cara modul dikelompokkan atau diklasifikasikan. Rangkaian modul yang disertakan menggunakan domain berikut:

  • application

  • net

  • os

  • performance

class

Penjelasan tentang tipe tugas yang dilakukan oleh modul. Rangkaian modul yang disertakan menggunakan domain berikut:

  • collect (mengambil output dari program)

  • diagnose (lulus/gagal berdasarkan serangkaian kriteria)

  • gather (menyalin file dan menulis ke file tertentu)

distro

Daftar distribusi Linux yang didukung oleh modul ini. Rangkaian modul yang disertakan menggunakan distribusi berikut:

  • alami (Amazon Linux)

  • rhel

  • ubuntu

  • suse

diperlukan

Argumen yang diperlukan bahwa modul mengkonsumsi dari CLI opsi.

optional

Argumen opsional yang dapat digunakan oleh modul.

software

Perangkat lunak yang dapat dieksekusi yang digunakan di dalam modul. Atribut ini ditujukan untuk menentukan perangkat lunak yang tidak terinstal secara default. Logika EC2Rescue for Linux memastikan bahwa program-program ini hadir dan dapat dieksekusi sebelum menjalankan modul.

package

Paket perangkat lunak sumber untuk file yang dapat dieksekusi. Atribut ini dimaksudkan untuk memberikan rincian tambahan pada paket dengan perangkat lunak, termasuk URL untuk mengunduh atau mendapatkan informasi lebih lanjut.

sudo

Mengindikasikan apakah akses root diperlukan untuk menjalankan modul.

Anda tidak perlu menerapkan pengecekan sudo dalam skrip modul. Jika nilainya benar, maka logika EC2Rescue untuk Linux hanya menjalankan modul ketika pengguna yang mengeksekusi memiliki akses root.

perfimpact

Mengindikasikan apakah modul dapat menimbulkan dampak performa yang signifikan terhadap lingkungan tempat modul dijalankan. Jika nilainya benar dan argumen --perfimpact=true tidak ada, modul akan dilewati.

parallelexclusive

Menentukan program yang membutuhkan eksklusivitas bersama. Misalnya, semua modul yang menentukan proses "bpf" dijalankan secara bersambung.

Menambahkan variabel lingkungan

Tabel berikut menjelaskan variabel lingkungan yang tersedia.

Variabel Lingkungan Deskripsi

EC2RL_CALLPATH

Path ke ec2rl.py. Path ini dapat digunakan untuk menemukan direktori lib dan menggunakan modul Python yang bervendor.

EC2RL_WORKDIR

Direktori tmp utama untuk alat diagnostik.

Nilai default: /var/tmp/ec2rl.

EC2RL_RUNDIR

Direktori tempat semua output disimpan.

Nilai default: /var/tmp/ec2rl/<date&timestamp>.

EC2RL_GATHEREDDIR

Direktori root untuk menempatkan data modul yang dikumpulkan.

Nilai default:/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/.

EC2RL_NET_DRIVER

Driver yang digunakan untuk antarmuka jaringan non-virtual pertama yang diurutkan menurut abjad pada instans.

Contoh:

  • xen_netfront

  • ixgbevf

  • ena

EC2RL_SUDO

Benar jika EC2Rescue untuk Linux berjalan sebagai root; jika tidak, false.

EC2RL_VIRT_TYPE

Tipe virtualisasi seperti yang disediakan oleh metadata instans.

Contoh:

  • default-hvm

  • default-paravirtual

EC2RL_INTERFACES

Daftar antarmuka yang disebutkan pada sistem. Nilai tersebut adalah string yang berisi nama, seperti eth0, eth1, dan lain-lain. Ini dibuat melalui functions.bash dan hanya tersedia untuk modul yang bersumber darinya.

Gunakan YAML sintaks

Berikut ini harus diperhatikan saat membuat YAML file modul Anda:

  • Tiga tanda hubung (---) menunjukkan awal yang jelas dari suatu dokumen.

  • !ec2rlcore.module.ModuleTag memberi tahu YAML parser konstruktor mana yang akan dipanggil saat membuat objek dari aliran data. Anda dapat menemukan konstruktor di dalam file module.py.

  • !!strTag memberitahu YAML parser untuk tidak mencoba untuk menentukan jenis data, dan sebagai gantinya menafsirkan konten sebagai string literal.

  • Karakter pipa (|) memberi tahu YAML parser bahwa nilainya adalah skalar gaya literal. Dalam hal ini, pengurai menyertakan semua spasi. Ini penting untuk modul karena indentasi dan karakter baris baru disimpan.

  • Indentasi YAML standar adalah dua spasi, yang dapat dilihat pada contoh berikut. Pastikan Anda mempertahankan indentasi standar (misalnya, empat spasi untuk Python) untuk skrip Anda dan kemudian menunjukkan seluruh konten dua spasi di dalam file modul.

Contoh modul

Contoh satu (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