

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

# Tindakan Bootstrap Kustom
<a name="pre_post_install"></a>

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 adalah 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
<a name="pre_post_install-configuration"></a>

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
<a name="arguments"></a>

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
<a name="example"></a>

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}"
   ```

1. Unggah skrip dengan izin yang benar ke Amazon S3. Jika izin baca publik tidak sesuai untuk Anda, gunakan salah satu [`s3_read_resource`](cluster-definition.md#s3-read-resource) atau [`s3_read_write_resource`](cluster-definition.md#s3-read-write-resource) parameter untuk memberikan akses. Untuk informasi selengkapnya, lihat [Bekerja dengan Amazon S3](s3_resources.md).

   ```
   $ 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.

1. 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'
   ```

1. Luncurkan cluster.

   ```
   $ pcluster create mycluster
   ```

1. 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
   ```