Saat membuat instans RDS Custom, Anda dapat menggunakan data kustom untuk mengonfigurasi sistem atau menjalankan skrip secara otomatis, seperti menginstal Nginx atau Docker secara awal atau mengubah hostname.
Data kustom
Data kustom adalah skrip atau file konfigurasi yang Anda berikan ke instans RDS Custom untuk menjalankan tugas inisialisasi otomatis saat boot pertama kali. Instans RDS Custom menggunakan komponen cloud-init guna membaca dan memproses data kustom tersebut. Berikut adalah format data umum:
-
User-Data script: Cocok untuk menjalankan skrip shell sederhana.
-
Cloud-config data: Menyediakan cara terstruktur untuk mengonfigurasi instans menggunakan format YAML, termasuk pengelolaan paket, pengguna, jaringan, dan lainnya.
-
Include file: Menggunakan direktif
#includeuntuk mereferensikan satu atau beberapa URL yang menunjuk ke skrip User-Data atau data Cloud-config, seperti URL Object Storage Service (OSS). -
Gzip compressed content: Jika skrip User-Data atau data Cloud-config melebihi 32 KB, Anda dapat mengompresnya menjadi file
.gzdan mereferensikannya melalui include file. -
MIME multi-part file: Menggabungkan beberapa tipe data, seperti data Cloud-config dan skrip User-Data, ke dalam satu file.
Frekuensi eksekusi data kustom bergantung pada jenis data dan skenario:
|
Format data |
Start instance |
Change operating system |
Re-initialize system disk |
|
User-Data script |
Hanya dijalankan saat instans dimulai untuk pertama kalinya. Tidak dijalankan pada reboot berikutnya. |
Dijalankan secara otomatis. |
Dijalankan secara otomatis. |
|
Cloud-config data |
Eksekusi tugas bergantung pada pengaturan frekuensi modul terkait.
|
Dijalankan secara otomatis. |
Dijalankan secara otomatis. |
|
include file |
Eksekusi bergantung pada konten yang ditautkan (skrip User-Data atau data Cloud-config). |
Dijalankan secara otomatis. |
Dijalankan secara otomatis. |
|
Gzip compressed content |
Eksekusi bergantung pada isi file (skrip User-Data atau data Cloud-config). |
Dijalankan secara otomatis. |
Dijalankan secara otomatis. |
|
MIME multi-part file |
Eksekusi bergantung pada isi file (skrip User-Data atau data Cloud-config). |
Dijalankan secara otomatis. |
Dijalankan secara otomatis. |
Skrip tidak dijalankan secara otomatis dalam skenario berikut:
-
Saat Anda mengganti sistem operasi dengan custom image yang dibuat dari instans asli, sistem tidak menganggap ini sebagai boot pertama, sehingga skrip tidak dijalankan.
-
Saat Anda melakukan re-inisialisasi sistem disk dari instans yang dibuat dari custom image, sistem tidak menganggapnya sebagai boot pertama karena disk sudah berisi data. Akibatnya, skrip tidak dijalankan.
Untuk informasi lebih lanjut tentang format data kustom, lihat dokumentasi cloud-init untuk User-Data Formats.
Batasan
Instans harus menggunakan public image atau custom image yang dibuat dari public image. Sistem operasi harus salah satu dari berikut:
Alibaba Cloud Linux, CentOS Stream, Ubuntu, Debian
Gunakan data kustom saat pembuatan instans
Langkah 1: Siapkan data kustom
User-Data script
-
Format
Baris pertama skrip harus berupa
#!. -
Contoh User-Data script
-
Jalankan skrip kustom. Contoh ini menulis waktu sistem ke file userdata_test.txt saat instans pertama kali dimulai.
#!/bin/sh echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt -
Kustomisasi repositori yum, konfigurasi DNS, dan layanan sinkronisasi waktu
Contoh berikut menggunakan CentOS Stream 9. Ganti konfigurasi tersebut dengan yang sesuai untuk sistem operasi Anda.
PentingSistem secara otomatis mengonfigurasi repositori yum default, layanan NTP, dan layanan DNS saat instans dimulai. Anda dapat menggunakan data kustom instans untuk mengubah pengaturan default ini. Namun, perhatikan hal berikut:
-
Jika Anda mengkustomisasi repositori yum, Alibaba Cloud tidak akan lagi memberikan dukungan untuk repositori yum tersebut.
-
Jika Anda mengkustomisasi layanan NTP, Alibaba Cloud tidak akan lagi memberikan dukungan untuk sinkronisasi waktu.
#!/bin/sh # Modify DNS echo "nameserver 114.114.114.114" | tee /etc/resolv.conf # Modify yum repo and update cp /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.bak cp /etc/yum.repos.d/centos-addons.repo /etc/yum.repos.d/centos-addons.repo.bak sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos.repo sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos-addons.repo yum update -y # Modify NTP Server echo "server ntp1.aliyun.com" | tee /etc/ntp.conf systemctl restart ntpd.serviceCatatanPada contoh ini,
114.114.114.114adalah alamat Server DNS,https://mirror.stream.centos.orgadalah alamat repositori yum CentOS Stream, danserver ntp1.aliyun.comadalah alamat server NTP Alibaba Cloud. Ganti dengan nilai aktual untuk lingkungan Anda.Anda juga dapat menggunakan data Cloud-config untuk mengubah repositori yum. Namun, metode ini kurang fleksibel dan mungkin tidak berfungsi dalam skenario di mana Alibaba Cloud telah mengonfigurasi repositori yum tertentu. Kami menyarankan Anda menggunakan User-Data script sebagai gantinya.
-
-
Buat akun administrator kustom
Secara default, instans RDS Custom menggunakan pengguna root sebagai administrator. Anda dapat menggunakan data kustom untuk membuat pengguna administratif tambahan.
#!/bin/sh useradd test-user echo "test-user ALL=(ALL) NOPASSWD:ALL" | tee -a /etc/sudoers mkdir /home/test-user/.ssh touch /home/test-user/.ssh/authorized_keys echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis****" | tee -a /home/test-user/.ssh/authorized_keysCatatanGanti kunci publik contoh ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis**** dengan kunci publik Anda.
-
Cloud-config data
-
Format
-
Baris pertama harus berupa
#cloud-config, tanpa spasi di awal. -
Isi harus menggunakan sintaksis YAML yang valid.
-
-
Contoh Cloud-config data
-
Kustomisasi repositori perangkat lunak
Untuk mengonfigurasi repositori perangkat lunak kustom, masukkan konten berikut di area Custom Data. Contoh ini untuk image Ubuntu. Jika Anda menggunakan image berbeda, ganti kontennya dengan konfigurasi modul yang sesuai.
#cloud-config apt: preserve_sources_list: false disable_suites: - $RELEASE-updates - backports - $RELEASE - mysuite primary: - arches: - amd64 - i386 - default uri: http://us.archive.ubuntu.com/ubuntu -
Otomatis instal layanan nginx
Masukkan konten berikut di area Custom Data untuk menginstal layanan nginx secara otomatis.
#cloud-config packages: - nginx runcmd: - systemctl start nginx.service -
Konfigurasi hostname kustom
Masukkan konten berikut di area Custom Data untuk mengatur hostname kustom.
#cloud-config hostname: my-instance fqdn: my-instance.localdomain -
Otomatis jalankan skrip kustom
Masukkan konten berikut di area Custom Data untuk menjalankan skrip shell secara otomatis setiap kali instans dimulai.
#cloud-config bootcmd: - echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt
-
Include file
-
Format
Baris pertama harus berupa
#include, tanpa spasi di awal. -
Contoh include file Contoh ini menunjukkan URL yang mengarah ke skrip yang disimpan di bucket Object Storage Service (OSS) di wilayah China (Hangzhou).
#include https://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.sh
Gzip compressed content
-
Format
Baris pertama harus berupa
#include, dan tidak boleh memiliki spasi di awal. -
Contoh Gzip compressed content Contoh ini menunjukkan URL yang mengarah ke file terkompresi Gzip yang disimpan di bucket Object Storage Service (OSS) di wilayah China (Hangzhou).
#include https://rc-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.gz
MIME multi-part file
-
Format
-
Baris pertama harus berupa
Content-Type: multipart/mixed; boundary="****", tanpa spasi di awal. Boundary dapat dikustomisasi. -
Baris kedua,
MIME-Version: 1.0, menentukan versi. Bidang ini biasanya diperlukan dalam setiap pesan MIME.
-
-
Contoh MIME multi-part file
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config runcmd: - [ mkdir, /test-cloudinit ] write_files: - path: /test-cloudinit/cloud-init.txt content: | Created by cloud-init append: true --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash mkdir test-userscript touch /test-userscript/userscript.txt echo "Created by bash shell script" >> /test-userscript/userscript.txt --//--File MIME multi-part contoh ini berisi direktif cloud-init dan skrip shell Bash:
-
Direktif cloud-init membuat file (
/test-cloudinit/cloud-init.txt) dan menulisCreated by cloud-initke dalamnya. -
Skrip shell Bash membuat file (
/test-userscript/userscript.txt) dan menulisCreated by bash shell scriptke dalamnya.
-
Langkah 2: Gunakan data kustom
-
Buat instance di konsol
Saat Anda membuat instans RDS Custom, buka bagian More dan masukkan data kustom Anda di area Custom Data.
PentingJika data kustom Anda sudah diencode Base64, pilih The preceding input is Base64-encoded.. Ukuran data kustom sebelum encoding tidak boleh melebihi 32 KB. Jika data Anda belum diencode, biarkan opsi ini tidak dipilih, dan sistem akan secara otomatis mengencode kontennya.
-
Buat instans menggunakan API
Jika Anda membuat instans menggunakan API, tentukan parameter
UserDatadalam operasi RunRCInstances.
Langkah 3 (Opsional): Verifikasi eksekusi data kustom
Bagian ini menggunakan skrip User-Data berikut sebagai contoh.
#!/bin/sh
echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt
Pada contoh ini, skrip User-Data menulis waktu sistem saat ini ke file userdata_test.txt saat instans pertama kali dimulai. Untuk memverifikasi hasilnya, jalankan perintah cat userdata_test.txt dan lihat output skrip tersebut.
Lihat data kustom
Anda dapat memanggil operasi DescribeRCInstanceAttribute untuk menanyakan data kustom dari instans RDS Custom.