Skrip instalasi dijalankan secara otomatis pada semua node kluster setelah kluster sepenuhnya diinisialisasi—yaitu setelah semua node dinyalakan dan perangkat lunak yang dipilih telah diinstal. Gunakan skrip ini untuk menginstal perangkat lunak tambahan atau menerapkan lingkungan perangkat lunak tanpa intervensi manual.
Kasus penggunaan
Setelah membuat kluster dari gambar publik, instal perangkat lunak atau siapkan lingkungan perangkat lunak.
Setelah membuat kluster dari gambar kustom, jalankan skrip kustom untuk menerapkan lingkungan perangkat lunak.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster E-HPC (atau kluster yang sedang dalam proses pembuatan)
Skrip yang ditulis dalam bahasa yang kompatibel dengan shell Linux (seperti Bash atau Python)
Konfigurasikan skrip instalasi
Pada halaman Create Cluster, navigasikan ke langkah Software Configurations dan temukan bagian Advanced Configurations untuk menambahkan skrip instalasi Anda.
Skrip harus ditulis dalam bahasa yang didukung oleh shell Linux. Baris pertama harus mendeklarasikan interpreter dengan shebang. Sebagai contoh, skrip Bash dimulai dengan:
#!/bin/bashContoh skrip
Skrip berikut mencatat variabel lingkungan kluster, metadata, dan role node ke file dalam direktori /root. Skrip ini menggunakan blok kondisional untuk menjalankan logika berbeda pada setiap tipe node.
#!/bin/bash
echo "call $0 with param: $@" | tee /root/command.log
## tampilkan semua variabel lingkungan yang tersedia
printenv | tee /root/env.log
## Metadata kluster
echo "ClusterId: ${ClusterId}, HOSTNAME: ${HOSTNAME}" | tee /root/cluster.log
echo "AccountType: ${AccountType}, SchedulerType: ${SchedulerType}" | tee -a /root/cluster.log
## Role mesin saat ini
echo "${Role}" | tee /root/role.log
if [ "${isLoginNode}" == "true" ]; then
## Lakukan pekerjaan Anda pada login node
echo "This is login node" | tee -a /root/role.log
exit $?
fi
if [ "${isAccountManager}" == "true" ]; then
## Lakukan pekerjaan Anda pada master NIS/LDAP
echo "This is account manager" | tee -a /root/role.log
exit $?
fi
if [ "${isResourceManager}" == "true" ]; then
## Lakukan pekerjaan Anda pada master Slurm/PBS
echo "This is scheduler" | tee -a /root/role.log
exit $?
fi
if [ "${isComputeNode}" == "true" ]; then
## Lakukan pekerjaan Anda pada compute node
echo "This is compute node" | tee -a /root/role.log
exit $?
fiUntuk mengunduh skrip ini, lihat contoh skrip instalasi.
Variabel lingkungan
E-HPC menyuntikkan variabel lingkungan ke setiap node sebelum menjalankan skrip. Gunakan variabel ini untuk mengidentifikasi kluster, node saat ini, dan perannya—sehingga Anda dapat menjalankan logika berbeda pada tipe node yang berbeda.
Identitas kluster dan node
| Variable | Example | Description |
|---|---|---|
ClusterId | ehpc-hz-AQoy7J**** | ID kluster. |
HOSTNAME | i-bp133vs16yb3kqdj**** | Hostname node saat ini. |
AccountType | NIS | Tipe akun domain. Nilai yang valid: NIS, LDAP. |
SchedulerType | PBS | Tipe penjadwal. Nilai yang valid: PBS, SLURM, GRIDENGINE. |
Role node
Variabel Role mengidentifikasi peran yang dimainkan oleh node saat ini. Satu node dapat memiliki beberapa role; jika demikian, nilainya berisi beberapa nama role yang dipisahkan koma (,).
| Variable | Example | Valid values |
|---|---|---|
Role | AccountManager | AccountManager — node manajemen akun domain utama<br>AccountManagerBackup — node manajemen akun domain sekunder<br>ResourceManager — node penjadwalan utama<br>ResourceManagerBackup — node penjadwalan sekunder<br>Compute — node komputasi<br>LoginNode — node logon |
Untuk pemeriksaan kondisional cepat, gunakan variabel boolean di bawah ini alih-alih melakukan penguraian terhadap Role.
Flag tipe node boolean
| Variable | Example | Description |
|---|---|---|
isLoginNode | true | Apakah node tersebut merupakan node logon. Nilai yang valid: true, false. |
isAccountManager | true | Apakah node tersebut merupakan server domain utama. Nilai yang valid: true, false. |
isAccountManagerBackup | true | Apakah node tersebut merupakan server domain sekunder. Nilai yang valid: true, false. |
isResourceManager | true | Apakah node tersebut merupakan penjadwal utama. Nilai yang valid: true, false. |
isResourceManagerBackup | true | Apakah node tersebut merupakan penjadwal sekunder. Nilai yang valid: true, false. |
isComputeNode | true | Apakah node tersebut merupakan node komputasi. Nilai yang valid: true, false. |
Alamat jaringan
| Variable | Example | Description |
|---|---|---|
ResourceManagerIp | 192.168.. | Alamat IP pribadi node penjadwalan utama. |
ResourceManagerHost | scheduler000 | Hostname node penjadwalan utama. |
AccountManagerIp | 192.168.. | Alamat IP pribadi node manajemen akun domain utama. |
AccountManagerHost | account000 | Hostname node manajemen akun domain utama. |
Variabel berikut diisi ketika ketersediaan tinggi diaktifkan.
| Variable | Example | Description |
|---|---|---|
ResourceManagerBackupIp | 192.168.. | Alamat IP pribadi node penjadwalan sekunder (Ketersediaan tinggi diaktifkan). |
ResourceManagerBackupHost | scheduler001 | Hostname node penjadwalan sekunder (Ketersediaan tinggi diaktifkan). |
AccountManagerBackupIp | 192.168.. | Alamat IP pribadi node manajemen akun domain sekunder (Ketersediaan tinggi diaktifkan). |
AccountManagerBackupHost | account001 | Hostname node manajemen akun domain sekunder (Ketersediaan tinggi diaktifkan). |
Skenario kegagalan
Skrip tidak dijalankan dalam situasi berikut:
Pembuatan kluster gagal: Jika pembuatan kluster gagal, skrip tidak dieksekusi pada node mana pun.
Satu node tidak berjalan: Jika node komputasi tertentu dalam kluster yang sehat tidak berjalan seperti yang diharapkan, skrip tidak dieksekusi pada node tersebut.
Kode keluar bukan nol: Jika skrip keluar dengan kode selain
0, eksekusi dianggap gagal.
Untuk menyelidiki kegagalan akibat kode keluar bukan nol, periksa halaman Operation Log di Konsol E-HPC untuk informasi peringatan. Untuk detail lebih lanjut, masuk ke kluster dan periksa file log di /root pada node yang terdampak.