Tindakan Bootstrap Kustom - AWS ParallelCluster

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

Tindakan Bootstrap Kustom

AWS ParallelCluster dapat menjalankan kode arbitrer baik sebelum (pra-instal) atau setelah (pasca-instal) tindakan bootstrap utama saat cluster dibuat. Dalam kebanyakan kasus, kode ini disimpan di Amazon Simple Storage Service (Amazon S3) dan diakses melalui koneksi HTTPS. Kode dijalankan sebagai root dan dapat dalam bahasa skrip apa pun yang didukung oleh OS cluster. Seringkali kode dalam Bash atau Python.

Tindakan pra-instal dipanggil sebelum tindakan bootstrap penerapan cluster dimulai, seperti mengonfigurasi NAT, Amazon Elastic Block Store (Amazon EBS) atau penjadwal. Beberapa tindakan pra-instal termasuk memodifikasi penyimpanan, menambahkan pengguna tambahan, dan menambahkan paket.

Tindakan pasca-instal dipanggil setelah proses bootstrap cluster selesai. Tindakan pasca-instal melayani tindakan terakhir yang terjadi sebelum sebuah instance dianggap sepenuhnya dikonfigurasi dan selesai. Beberapa tindakan pasca-instal termasuk mengubah pengaturan penjadwal, memodifikasi penyimpanan, dan memodifikasi paket.

Anda dapat meneruskan argumen ke skrip dengan menentukannya selama konfigurasi. Untuk ini, Anda meneruskannya dikutip ganda ke tindakan pra-instal atau pasca-instal.

Jika tindakan pra-instal atau pasca-instal gagal, bootstrap instance juga gagal. Keberhasilan ditandai dengan kode keluar nol (0). Kode keluar lainnya menunjukkan instance bootstrap gagal.

Anda dapat membedakan antara running head dan compute node. Sumber /etc/parallelcluster/cfnconfig file dan evaluasi variabel cfn_node_type lingkungan yang memiliki nilai "" dan MasterServer "ComputeFleet" untuk node head dan compute, masing-masing.

#!/bin/bash . "/etc/parallelcluster/cfnconfig" case "${cfn_node_type}" in MasterServer) echo "I am the head node" >> /tmp/head.txt ;; ComputeFleet) echo "I am a compute node" >> /tmp/compute.txt ;; *) ;; esac

Konfigurasi

Pengaturan konfigurasi berikut digunakan untuk menentukan tindakan dan argumen pra-instal dan pasca-instal.

# URL to a preinstall script. This is run before any of the boot_as_* scripts are run # (no default) pre_install = https://<bucket-name>.s3.amazonaws.com/my-pre-install-script.sh # Arguments to be passed to preinstall script # (no default) pre_install_args = argument-1 argument-2 # URL to a postinstall script. This is run after any of the boot_as_* scripts are run # (no default) post_install = https://<bucket-name>.s3.amazonaws.com/my-post-install-script.sh # Arguments to be passed to postinstall script # (no default) post_install_args = argument-3 argument-4

Pendapat

Dua argumen pertama — $0 dan $1 — dicadangkan untuk nama skrip dan url.

$0 => the script name $1 => s3 url $n => args set by pre/post_install_args

Contoh

Langkah-langkah berikut membuat skrip pasca-instal sederhana yang menginstal paket R dalam sebuah cluster.

  1. Membuat skrip.

    #!/bin/bash echo "post-install script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:2}"
  2. Unggah skrip dengan izin yang benar ke Amazon S3. Jika izin baca publik tidak sesuai untuk Anda, gunakan salah satu s3_read_resource atau s3_read_write_resource parameter untuk memberikan akses. Untuk informasi selengkapnya, lihat Bekerja dengan Amazon S3.

    $ aws s3 cp --acl public-read /path/to/myscript.sh s3://bucket-name/myscript.sh
    penting

    Jika skrip diedit di Windows, akhiran baris harus diubah dari CRLF ke LF sebelum skrip diunggah ke Amazon S3.

  3. Perbarui AWS ParallelCluster konfigurasi untuk menyertakan tindakan pasca-instal baru.

    [cluster default] ... post_install = https://bucket-name.s3.amazonaws.com/myscript.sh post_install_args = 'R curl wget'

    Jika bucket tidak memiliki izin baca publik, gunakan s3 sebagai protokol URL.

    [cluster default] ... post_install = s3://bucket-name/myscript.sh post_install_args = 'R curl wget'
  4. Luncurkan cluster.

    $ pcluster create mycluster
  5. Verifikasi output.

    $ less /var/log/cfn-init.log 2019-04-11 10:43:54,588 [DEBUG] Command runpostinstall output: post-install script has 4 arguments arg: s3://bucket-name/test.sh arg: R arg: curl arg: wget Loaded plugins: dkms-build-requires, priorities, update-motd, upgrade-helper Package R-3.4.1-1.52.amzn1.x86_64 already installed and latest version Package curl-7.61.1-7.91.amzn1.x86_64 already installed and latest version Package wget-1.18-4.29.amzn1.x86_64 already installed and latest version Nothing to do