All Products
Search
Document Center

:Inisialisasi instans menggunakan data kustom

Last Updated:Jun 21, 2026

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 #include untuk 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 .gz dan 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.

  • once-per-instance: Hanya dijalankan saat instans dimulai untuk pertama kalinya.

  • always: Dijalankan setiap kali instans dimulai.

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.

Penting

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.

      Penting

      Sistem 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.service
      Catatan

      Pada contoh ini, 114.114.114.114 adalah alamat Server DNS, https://mirror.stream.centos.org adalah alamat repositori yum CentOS Stream, dan server ntp1.aliyun.com adalah 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_keys
      Catatan

      Ganti 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 menulis Created by cloud-init ke dalamnya.

    • Skrip shell Bash membuat file (/test-userscript/userscript.txt) dan menulis Created by bash shell script ke 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.

    Penting

    Jika 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 UserData dalam 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.

Dokumentasi terkait

Buat instans RDS Custom