Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tindakan bootstrap kustom
Jika Anda menentukan pengaturan OnNodeStartkonfigurasi HeadNodeCustomActions//, AWS ParallelCluster jalankan kode arbitrer segera setelah node dimulai. Jika Anda menentukan pengaturan OnNodeConfiguredkonfigurasi HeadNodeCustomActions//, AWS ParallelCluster jalankan kode setelah konfigurasi node selesai dengan benar.
Dimulai dengan AWS ParallelCluster versi 3.4.0, kode dapat dijalankan setelah pembaruan node kepala, jika Anda menentukan pengaturan OnNodeUpdatedkonfigurasi HeadNodeCustomActions//.
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.
catatan
Dimulai dengan AWS ParallelCluster versi 3.7.0, ImdsSupportpengaturan klaster Imds/default adalah. v2.0
Saat Anda membuat cluster baru untuk meningkatkan ke versi 3.7.0 dan versi yang lebih baru, perbarui skrip tindakan bootstrap kustom Anda agar kompatibel dengan IMDSv2 atau atur Imds/ImdsSupportke v1.0
dalam file konfigurasi cluster Anda.
Awas
Anda bertanggung jawab untuk mengonfigurasi skrip dan argumen kustom seperti yang dijelaskan dalam model tanggung jawab bersama
Awas
AWS ParallelClustertidak mendukung penggunaan variabel internal yang disediakan melalui /etc/parallelcluster/cfnconfig
file. File ini mungkin akan dihapus sebagai bagian dari rilis future.
OnNodeStart
tindakan dipanggil sebelum tindakan bootstrap penerapan node dimulai, seperti mengonfigurasi NAT, Amazon Elastic Block Store (Amazon EBS) atau penjadwal. OnNodeStart
Tindakan bootstrap mungkin termasuk memodifikasi penyimpanan, menambahkan pengguna tambahan, dan menambahkan paket.
catatan
Jika Anda mengkonfigurasi DirectoryServicedan OnNodeStartskrip HeadNodeCustomActions//untuk cluster Anda, AWS ParallelCluster mengkonfigurasi DirectoryService
dan memulai ulangsssd
, sebelum menjalankan skrip. OnNodeStart
OnNodeConfigured
tindakan dipanggil setelah proses bootstrap node selesai. OnNodeConfigured
tindakan melayani tindakan terakhir yang terjadi sebelum sebuah instance dianggap sepenuhnya dikonfigurasi dan selesai. Beberapa OnNodeConfigured
tindakan termasuk mengubah pengaturan penjadwal, memodifikasi penyimpanan, dan memodifikasi paket. Anda dapat meneruskan argumen ke skrip dengan menentukannya selama konfigurasi.
OnNodeUpdated
tindakan dipanggil setelah pembaruan node kepala selesai dan penjadwal dan penyimpanan bersama diselaraskan dengan perubahan konfigurasi cluster terbaru.
Kapan OnNodeStart
atau tindakan OnNodeConfigured
kustom berhasil, keberhasilan ditunjukkan dengan kode keluar nol (0). Kode keluar lainnya menunjukkan instance bootstrap gagal.
Ketika tindakan OnNodeUpdated
kustom berhasil, keberhasilan ditandai dengan kode keluar nol (0). Kode keluar lainnya menunjukkan pembaruan gagal.
catatan
Jika Anda mengkonfigurasi OnNodeUpdated, Anda harus mengembalikan OnNodeUpdated
tindakan secara manual ke keadaan sebelumnya pada kegagalan pembaruan.
Jika tindakan OnNodeUpdated
kustom gagal, pembaruan akan kembali ke status sebelumnya. Namun, OnNodeUpdated
tindakan ini hanya dijalankan pada waktu pembaruan dan bukan pada waktu rollback stack.
Anda dapat menentukan skrip yang berbeda untuk node kepala dan untuk setiap antrian, di bagian CustomActionskonfigurasi HeadNode/CustomActionsdan SchedulingSlurmQueues/. OnNodeUpdatedhanya dapat dikonfigurasi di HeadNode
bagian.
catatan
Sebelum AWS ParallelCluster versi 3.0, tidak mungkin untuk menentukan skrip yang berbeda untuk node head dan compute. Silakan merujuk kePindah dari AWS ParallelCluster 2.x ke 3.x.
Topik
Konfigurasi
Pengaturan konfigurasi berikut digunakan untuk mendefinisikan HeadNode/CustomActions/OnNodeStart& OnNodeConfigured& OnNodeUpdateddan Scheduling/CustomActions/OnNodeStart& OnNodeConfiguredtindakan dan argumen.
HeadNode: [...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://
bucket-name
/on-node-start.sh
Args: - arg1 OnNodeConfigured: # Script URL. This is run after all the bootstrap scripts are run Script: s3://bucket-name
/on-node-configured.sh
Args: - arg1 OnNodeUpdated: # Script URL. This is run after the head node update is completed. Script: s3://bucket-name
/on-node-updated.sh
Args: - arg1 # Bucket permissions Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: Script: s3://bucket-name
/on-node-start.sh
Args: - arg1 OnNodeConfigured: Script: s3://bucket-name
/on-node-configured.sh
Args: - arg1 Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
Menggunakan Sequence
pengaturan (ditambahkan dalam AWS ParallelCluster versi 3.6.0):
HeadNode: [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script: s3://
bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run. Sequence: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] OnNodeUpdated: # Script URLs. The scripts are run in the same order as listed in the configuration, after the head node update is completed. Sequence: - Script: s3://bucket-name
/on-node-updated1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-updated2.sh
Args: - arg1 [...] # Bucket permissions Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run Sequence: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run Sequence: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
Sequence
Pengaturan ditambahkan dimulai dengan AWS ParallelCluster versi 3.6.0. Saat Anda menentukanSequence
, Anda dapat membuat daftar beberapa skrip untuk tindakan kustom. AWS ParallelClusterterus mendukung konfigurasi tindakan khusus dengan satu skrip, tanpa menyertakanSequence
.
AWS ParallelClustertidak mendukung termasuk skrip tunggal dan Sequence
untuk tindakan kustom yang sama. Misalnya, AWS ParallelCluster gagal jika Anda menentukan konfigurasi berikut.
[...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://
bucket-name
/on-node-start.sh
Args: - arg1 # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...]
Argumen
catatan
Dalam AWS ParallelCluster 2.x $1
argumennya adalah yang dicadangkan, untuk menyimpan URL skrip kustom. Jika Anda ingin menggunakan kembali skrip bootstrap khusus yang dibuat untuk AWS ParallelCluster 2.x dengan AWS ParallelCluster 3.x, Anda perlu menyesuaikannya dengan mempertimbangkan pergeseran argumen. Silakan merujuk kePindah dari AWS ParallelCluster 2.x ke 3.x.
Contoh cluster dengan tindakan bootstrap kustom
Langkah-langkah berikut membuat skrip sederhana untuk dieksekusi setelah node dikonfigurasi, yang menginstal R,
curl
dan wget
paket di node cluster.
-
Membuat skrip.
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
Unggah skrip dengan izin yang benar ke Amazon S3. Jika izin baca publik tidak sesuai untuk Anda, gunakan bagian SlurmQueueskonfigurasi HeadNodeIam//S3Accessdan Scheduling/. 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.
-
Perbarui AWS ParallelCluster konfigurasi untuk menyertakan
OnNodeConfigured
tindakan baru.CustomActions: OnNodeConfigured: Script: https://
<bucket-name>
.s3.<region>
.amazonaws.com/myscript.sh
Args: - "R" - "curl" - "wget"Jika bucket tidak memiliki izin baca publik, gunakan
s3
sebagai protokol URL.CustomActions: OnNodeConfigured: Script: s3://
<bucket-name>
/myscript.sh
Args: - "R" - "curl" - "wget" -
Luncurkan cluster.
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
Verifikasi output.
-
Jika Anda menambahkan tindakan kustom ke
HeadNode
konfigurasi, masuk ke node kepala dan periksacfn-init.log
file yang terletak di/var/log/cfn-init.log
dengan menjalankan perintah berikut:$ less /var/log/cfn-init.log 2021-09-03 10:43:54,588 [DEBUG] Command run postinstall output: The script has 3 arguments 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
-
Jika Anda menambahkan tindakan kustom ke
SlurmQueues
pengaturan, periksacloud-init.log
lokasi di/var/log/cloud-init.log
dalam node komputasi. Gunakan CloudWatch untuk melihat log ini.
Anda dapat melihat kedua log ini di CloudWatch konsol Amazon. Untuk informasi selengkapnya, lihat Integrasi dengan Amazon CloudWatch Logs.
-
Contoh memperbarui skrip bootstrap kustom untuk IMDSv2
Dalam contoh berikut, kami memperbarui skrip tindakan bootstrap kustom yang digunakan dengan IMDSv1 untuk digunakan dengan IMDSv2. Skrip IMDSv1 mengambil metadata ID AMI instans EC2.
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Berikut ini menunjukkan skrip tindakan bootstrap kustom yang dimodifikasi agar kompatibel dengan IMDSv2.
#!/bin/bash AMI_ID=$(TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Untuk informasi selengkapnya, lihat Mengambil metadata instans di Panduan Pengguna EC2 untuk Instans Linux.
Contoh memperbarui konfigurasi untuk IMDSv1
Berikut ini adalah contoh konfigurasi cluster yang mendukung IMDSv1 saat menggunakan AWS ParallelCluster versi 3.7.0 dan yang lebih lama.
Region:
us-east-1
Imds: ImdsSupport: v1.0 Image: Os:alinux2
HeadNode: InstanceType:t2.micro
Networking: SubnetId:subnet-abcdef01234567890
Ssh KeyName:key-name
CustomActions: OnNodeConfigured: Script:Script-path
Scheduling: Scheduler: slurm SlurmQueues: - Name:queue1
CustomActions: OnNodeConfigured: Script:Script-path
ComputeResources: - Name:t2micro
Instances: - InstanceType:t2.micro
MinCount:1
1 Networking: SubnetIds: -subnet-abcdef01234567890