All Products
Search
Document Center

Elastic Compute Service:Instal cloud-init

Last Updated:Aug 21, 2026

cloud-init adalah alat inisialisasi open source yang menyediakan kemampuan inisialisasi untuk sistem operasi Linux, seperti mengatur kata sandi, mengonfigurasi hostname, dan menjalankan skrip kustom. Jika custom image yang Anda buat di lingkungan on-premises tidak memiliki cloud-init yang terinstal dan akan dimigrasikan ke cloud, Anda harus menginstal cloud-init secara manual. Jika tidak, instans ECS yang dibuat dari custom image tersebut tidak dapat menjalankan tugas inisialisasi secara otomatis—seperti pengaturan hostname dan konfigurasi jaringan—sehingga memengaruhi efisiensi deployment dan konfigurasi otomatis. Topik ini menjelaskan cara menginstal cloud-init pada sistem operasi Linux.

Untuk informasi lebih lanjut tentang cloud-init, lihat dokumentasi resmi cloud-init.

Skenario

Semua public image Alibaba Cloud telah menginstal cloud-init secara default. Untuk memastikan bahwa instans ECS yang dibuat dari custom image on-premises Anda dapat menginisialisasi konfigurasi sistem secara otomatis, kami merekomendasikan agar Anda mengacu pada panduan berikut dan melakukan tindakan yang sesuai berdasarkan kondisi aktual Anda.

  • Server Linux yang akan dimigrasikan ke cloud tanpa cloud-init yang terinstal

    Jika server Anda direncanakan untuk dimigrasikan ke Alibaba Cloud tetapi belum memiliki cloud-init yang terinstal, instal cloud-init sebelum migrasi agar instans ECS baru dapat menjalankan tugas inisialisasi secara otomatis saat startup.

    Catatan

    Untuk server yang tidak akan dimigrasikan ke cloud, menginstal cloud-init dapat menambah kompleksitas atau penggunaan sumber daya yang tidak perlu. Putuskan apakah akan menginstal cloud-init berdasarkan lingkungan aktual Anda.

  • Server Linux dengan versi cloud-init lebih awal dari 0.7.9

    Versi cloud-init yang lebih baru umumnya mencakup fitur tambahan dan perbaikan guna memastikan kompatibilitas dengan fitur platform cloud terbaru. Jika versi cloud-init pada server Anda masih lama, kami merekomendasikan upgrade ke versi yang lebih baru untuk memastikan kompatibilitas dan keamanan optimal.

  • Instans ECS yang berjalan di Alibaba Cloud tanpa cloud-init yang terinstal

    Jika instans ECS Anda tidak memiliki cloud-init, kami merekomendasikan agar Anda menginstal cloud-init secara manual di dalam instans tersebut agar dapat menyelesaikan konfigurasi inisialisasi.

Langkah 1: Periksa apakah Anda perlu menginstal atau meng-upgrade cloud-init

  1. Login ke server sumber.

  2. Jalankan perintah berikut untuk memeriksa apakah cloud-init sudah terinstal.

    Seri CentOS

    rpm -qa | grep -i cloud-init 
    pip list | grep -i cloud-init

    Seri Ubuntu

    dpkg -l | grep -i cloud-init 
    pip list | grep -i cloud-init
    • Jika tidak ada output yang dikembalikan atau versinya lebih awal dari 0.7.9: Anda harus Langkah 2: Instal cloud-init.

      Penting

      Versi 0.7.9 merupakan edisi komunitas awal cloud-init dan tidak dapat digunakan untuk menginisialisasi instans ECS. Anda harus melakukan upgrade ke versi yang lebih baru.

    • Jika versinya 18 atau lebih baru: Anda tidak perlu menginstal cloud-init. Namun, cloud-init secara otomatis mengonfigurasi jaringan selama inisialisasi instans. Jika konfigurasi default tidak memenuhi kebutuhan Anda, Anda dapat menonaktifkan fitur inisialisasi jaringan. Untuk informasi lebih lanjut, lihat Nonaktifkan inisialisasi jaringan otomatis oleh Alibaba Cloud.

    • Jika versinya 19.1.21: Kami merekomendasikan agar Anda melakukan upgrade ke Alibaba Cloud cloud-init 23.2.2. Dibandingkan dengan Alibaba Cloud cloud-init 19.1.21, Alibaba Cloud cloud-init 23.2.2 menyediakan peningkatan dan fitur berikut:

      • Jika versi cloud-init sebuah instans adalah 23.2.2, instans tersebut mendukung akses ke metadata dalam mode Penguatan Keamanan. Untuk informasi lebih lanjut tentang instance metadata, lihat Instance metadata.

      • Peningkatan fitur lainnya, peningkatan performa, perbaikan bug, dan kontribusi komunitas. Untuk informasi lebih lanjut, lihat file ChangeLog.

    • Kasus lainnya: Anda tidak perlu menginstal cloud-init. Anda dapat langsung melanjutkan ke Langkah selanjutnya.

  3. Untuk mencegah kehilangan data akibat operasi tidak disengaja selama instalasi cloud-init, kami merekomendasikan agar Anda membuat backup data server sumber terlebih dahulu, misalnya dengan membuat Snapshot.

Langkah 2: Instal cloud-init

  • Alibaba Cloud cloud-init 23.2.2: direkomendasikan. Versi ini bergantung pada Python 3.6 atau lebih baru dan menggunakan sumber data Aliyun.

  • Alibaba Cloud cloud-init 19.1.21: Versi ini bergantung pada Python 3.6 atau lebih baru dan menggunakan sumber data Aliyun.

  • Alibaba Cloud cloud-init 0.7.6a18: Versi ini diperlukan untuk sistem operasi lama tertentu, seperti CentOS 6, Debian 9, dan SUSE Linux Enterprise Server 12. Versi ini bergantung pada Python 2.7 dan menggunakan sumber data Aliyun.

    Penting

    Komunitas Python telah menghentikan dukungan teknis untuk Python 2.7. Kami merekomendasikan agar Anda menggunakan versi cloud-init yang lebih baru bila memungkinkan untuk menghindari potensi masalah pada library dependensi.

  • Edisi komunitas cloud-init: Edisi komunitas cloud-init dipelihara oleh komunitas. Versi terbaru Alibaba Cloud cloud-init adalah 23.2.2. Jika Anda memerlukan versi cloud-init yang lebih baru, Anda dapat menginstal edisi komunitas. Untuk informasi tentang versi, lihat situs resmi cloud-init.

Edisi komunitas cloud-init adalah versi resmi proyek cloud-init, sedangkan Alibaba Cloud cloud-init dioptimalkan untuk platform Alibaba Cloud dan memberikan dukungan yang lebih baik untuk layanan platform Alibaba Cloud. Oleh karena itu, kami merekomendasikan agar Anda menggunakan Alibaba Cloud cloud-init. Pilih edisi cloud-init yang akan diinstal berdasarkan kebutuhan aktual Anda.

(Direkomendasikan) Alibaba Cloud cloud-init 23.2.2

Versi terbaru Alibaba Cloud cloud-init adalah 23.2.2. Versi ini dipelihara sebagai paket software. Anda dapat menginstal paket yang sesuai dengan versi sistem operasi Anda, atau menginstal dari paket kode sumber.

Tabel berikut mencantumkan URL unduhan paket software untuk setiap sistem operasi:

Jenis sistem operasi

Versi sistem operasi

Paket biner

MD5SUM Checksum

Paket kode sumber

Debian

12

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-8_all.deb.md5sum

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-23.2.2-8.tar.gz

11

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian11/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian11/cloud-init_23.2.2-8_all.deb.md5sum

CentOS Stream

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Fedora

42

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora42/cloud-init-23.2.2-8.fc42.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora42/cloud-init-23.2.2-8.fc42.noarch.rpm.md5sum

41

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora41/cloud-init-23.2.2-8.fc41.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora41/cloud-init-23.2.2-8.fc41.noarch.rpm.md5sum

40

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora40/cloud-init-23.2.2-8.fc40.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora40/cloud-init-23.2.2-8.fc40.noarch.rpm.md5sum

39

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-8.fc39.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-8.fc39.noarch.rpm.md5sum

38

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-8.fc38.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-8.fc38.noarch.rpm.md5sum

AlmaLinux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Rocky Linux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-8.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-8.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-8.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-8.el8.noarch.rpm.md5sum

Ubuntu

24

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu24/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu24/cloud-init_23.2.2-8_all.deb.md5sum

22

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu22/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu22/cloud-init_23.2.2-8_all.deb.md5sum

20

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu20/cloud-init_23.2.2-8_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/ubuntu20/cloud-init_23.2.2-8_all.deb.md5sum

Contoh berikut menunjukkan cara menginstal cloud-init dengan mengunduh dan menginstal paket biner pada Debian 12 dan CentOS Stream 9.

Debian 12

  1. Jalankan perintah berikut untuk mengunduh paket cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-8_all.deb
  2. Jalankan perintah berikut untuk menginstal paket tersebut.

    sudo apt-get install -y ./cloud-init_23.2.2-8_all.deb
  3. (Opsional) Untuk mencegah paket diperbarui atau di-upgrade ke versi open source yang lebih baru, kami merekomendasikan agar Anda menjalankan perintah berikut untuk mengunci versi paket cloud-init.

    sudo apt-mark hold cloud-init
  4. Jalankan perintah berikut untuk memeriksa apakah versi cloud-init sesuai dengan ekspektasi Anda.

    cloud-init --version

CentOS Stream 9

  1. Jalankan perintah berikut untuk mengunduh paket cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-8.el9.noarch.rpm
  2. Jalankan perintah berikut untuk menginstal paket tersebut.

    sudo yum install -y ./cloud-init-23.2.2-8.el9.noarch.rpm
  3. (Opsional) Untuk mencegah paket diperbarui atau di-upgrade ke versi open source yang lebih baru, kami merekomendasikan agar Anda menjalankan perintah berikut untuk mengunci versi paket cloud-init.

    sudo sh -c 'echo "exclude=cloud-init" >> /etc/dnf/dnf.conf'
  4. Jalankan perintah berikut untuk memeriksa apakah versi cloud-init sesuai dengan ekspektasi Anda.

    cloud-init --version
Catatan

Secara default, Alibaba Cloud cloud-init 23.2.2 tidak lagi memetakan hostname ke private-ipv4 dalam file /etc/hosts. Jika bisnis Anda memerlukan konfigurasi ini, konfigurasikan secara manual. Sistem operasi yang lebih baru mengimplementasikan konektivitas hostname melalui komponen nss-myhostname, yang disediakan oleh paket systemd-libs (seri Red Hat) atau paket libnss-myhostname (seri Debian) dan diaktifkan melalui file konfigurasi /etc/nsswitch.conf. Untuk informasi lebih lanjut, lihat manual nss-myhostname.

Alibaba Cloud cloud-init 19.1.21

  1. Pastikan library dependensi Python PIP telah terinstal di server sumber.

    Contoh berikut menunjukkan perintah untuk menginstal library dependensi Python3-pip pada beberapa distribusi Linux.

    CentOS/Red Hat Enterprise Linux

    sudo yum -y install python3-pip

    Ubuntu/Debian

    sudo apt-get -y install python3-pip

    OpenSUSE/SUSE

    sudo zypper -n install python3-pip
  2. Jalankan perintah berikut untuk mengunduh Alibaba Cloud cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
  3. Jalankan perintah berikut untuk mengekstrak paket instalasi cloud-init ke direktori saat ini.

    tar -zxvf cloud-init-19.1.21.tgz
  4. Masuk ke direktori cloud-init dan instal library dependensi.

    cd ./cloud-init-19.1.21
    pip3 install -r ./requirements.txt
  5. Masuk ke direktori tools dari cloud-init.

    cd ./tools
  6. Jalankan perintah berikut untuk menjalankan skrip deploy.sh yang menginstal cloud-init.

    sudo bash ./deploy.sh <issue> <major_version>

    Tabel berikut menjelaskan parameter dan contoh nilai skrip deploy.sh:

    Parameter

    Deskripsi

    Contoh

    <issue>

    Jenis platform sistem operasi. Nilai yang valid: centos | redhat |rhel | debian | ubuntu | opensuse | sles. Nilai bersifat case-sensitive. sles menunjukkan SUSE/SLES.

    Catatan

    Jika sistem operasinya adalah CentOS Stream, pilih centos sebagai jenis platform sistem operasi.

    centos

    <major_version>

    Nomor versi utama platform sistem operasi.

    Catatan

    Ubuntu 14 tidak mendukung Alibaba Cloud cloud-init 19.1.21.

    Nomor versi utama CentOS 7.6 adalah 7

    Sebagai contoh, jika sistem operasi Anda adalah CentOS 7, jalankan perintah sudo bash ./deploy.sh centos 7.

  7. Periksa apakah cloud-init telah terinstal.

    Jika "description": "success" dikembalikan, instalasi berhasil.

    {
      "status_code": 0,
      "description": "success"
    }
  8. Jalankan perintah berikut untuk memeriksa apakah versi cloud-init sesuai dengan ekspektasi Anda.

    cloud-init --version

Skrip shell contoh berikut menunjukkan cara menginstal Alibaba Cloud cloud-init pada berbagai distribusi Linux sebagai referensi. Sesuaikan skrip berdasarkan sistem operasi Anda sebelum instalasi.

CentOS 7/8

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools' >& /dev/null; then
  yum -y install python3-pip
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/redhat-release | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh centos "$issue_major"

Red Hat Enterprise Linux 7/8

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools' >& /dev/null; then
  yum -y install python3-pip
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh rhel "$issue_major"

Ubuntu 16/18/20

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools' >& /dev/null; then
  apt-get install python36 python3-pip -y
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh ubuntu "$issue_major"

Debian 9/10

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools' >& /dev/null; then
  apt-get -y install python3-pip
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh debian "$issue_major"

SUSE 12/15

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools'>& /dev/null; then
  zypper -n install python3-pip
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh sles "$issue_major"

OpenSUSE 15

# Periksa dan instal python3-pip
if ! python3 -c 'import setuptools'>& /dev/null; then
  zypper -n install python3-pip
fi
# Backup versi cloud-init sebelumnya
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak Alibaba Cloud cloud-init
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf ./cloud-init-19.1.21.tgz
# Instal cloud-init
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.' '{printf $1}')
bash ./cloud-init-*/tools/deploy.sh opensuse "$issue_major"

Alibaba Cloud cloud-init 0.7.6a18

Catatan

Public image Alibaba Cloud CentOS 6, Debian 9, dan SUSE Linux Enterprise Server 12 telah menginstal cloud-init-0.7.6a18 secara default. Jika Anda perlu melakukan pengujian, jalankan perintah sudo mv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg_bak untuk membuat backup file konfigurasi terlebih dahulu.

  1. Jalankan perintah berikut untuk memeriksa bahwa versi sistem operasi adalah CentOS 6, Debian 9, atau SUSE Linux Enterprise Server 12.

    cat /etc/issue
  2. Pastikan library dependensi Python PIP telah terinstal di server sumber.

    Contoh berikut menunjukkan perintah untuk menginstal library dependensi Python2-pip.

    CentOS 6/SUSE Linux Enterprise Server 12

    sudo yum -y install python2-pip

    Debian 9

    sudo apt-get -y install python2-pip
  3. Jalankan perintah berikut untuk mengunduh dan mengekstrak Alibaba Cloud cloud-init 0.7.6a18.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloud-init-0.7.6a18.tgz
    tar -zxvf cloud-init-0.7.6a18.tgz
  4. Masuk ke direktori tools dari cloud-init.

    cd cloud-init-0.7.6a18/tools/
  5. Jalankan perintah berikut untuk menginstal cloud-init.

    sudo bash ./deploy.sh <issue> <major_version>

    Sebagai contoh, jika sistem operasi Anda adalah CentOS 6, jalankan perintah sudo bash ./deploy.sh centos 6.

    Tabel berikut menjelaskan parameter dan contoh nilai skrip deploy.sh:

    Parameter

    Deskripsi

    Contoh

    <issue>

    Jenis platform sistem operasi. Nilai yang valid: centos | debian | sles. Nilai bersifat case-sensitive. sles menunjukkan SUSE/SLES.

    centos

    <major_version>

    Nomor versi utama platform sistem operasi.

    Nomor versi utama CentOS 6.5 adalah 6

  6. Jalankan perintah berikut untuk memeriksa apakah versi cloud-init sesuai dengan ekspektasi Anda.

    cloud-init --version

Edisi komunitas cloud-init

  1. Pastikan Git, Python, dan library dependensi Python PIP telah terinstal di server sumber.

    Contoh berikut menunjukkan perintah untuk menginstal Git, Python 3.6, dan library dependensi Python3-pip pada beberapa distribusi Linux.

    CentOS/Red Hat Enterprise Linux

    sudo yum -y install git python36 python3-pip

    Ubuntu/Debian

    sudo apt-get -y install git python3 python3-pip

    OpenSUSE/SUSE

    sudo zypper -n install git python36 python3-pip
  2. Jalankan perintah berikut untuk mengunduh paket kode sumber cloud-init menggunakan Git.

    git clone https://git.launchpad.net/cloud-init
  3. Masuk ke direktori cloud-init.

    cd ./cloud-init
  4. Jalankan perintah berikut untuk menginstal semua library dependensi.

    sudo pip3 install -r ./requirements.txt
  5. Jalankan perintah berikut untuk menginstal cloud-init.

    python3 setup.py install
  6. Modifikasi file konfigurasi cloud.cfg.

    1. Buka file konfigurasi.

      sudo vi /etc/cloud/cloud.cfg

      Cari bagian cloud_init_modules: dalam file tersebut.

      # Pengaturan tingkat atas digunakan sebagai modul
      # dan konfigurasi sistem.
      
      # Sekumpulan pengguna yang dapat diterapkan dan/atau digunakan oleh berbagai modul
      # ketika entri 'default' ditemukan, akan merujuk ke 'default_user'
      # dari konfigurasi distro yang ditentukan di bawah
      users:
         - default
      
      # Jika ini diatur, 'root' tidak akan dapat login SSH dan mereka
      # akan mendapatkan pesan untuk login sebagai pengguna $user default
      disable_root: true
      
      # Ini akan menyebabkan modul set+update hostname tidak beroperasi (jika true)
      preserve_hostname: false
      
      # Contoh konfigurasi datasource
      # datasource:
      #    Ec2:
      #      metadata_urls: [ 'blah.com' ]
      #      timeout: 5 # (default 50 detik)
      #      max_wait: 10 # (default 120 detik)
      
      # Modul yang berjalan pada tahap 'init'
      cloud_init_modules:
    2. Ubah konfigurasi sebelum cloud_init_modules: menjadi konten berikut.

      # Contoh konfigurasi datasource
      # Pengaturan tingkat atas digunakan sebagai modul
      # dan konfigurasi sistem.
      # Sekumpulan pengguna yang dapat diterapkan dan/atau digunakan oleh berbagai modul
      # ketika entri 'default' ditemukan, akan merujuk ke 'default_user'
      # dari konfigurasi distro yang ditentukan di bawah
      users:
         - default
      user:
          name: root
          lock_passwd: False
      # Jika ini diatur, 'root' tidak akan dapat login SSH dan mereka 
      # akan mendapatkan pesan untuk login sebagai pengguna $user di atas
      disable_root: false
      # Ini akan menyebabkan modul set+update hostname tidak beroperasi (jika true)
      preserve_hostname: false
      syslog_fix_perms: root:root
      datasource_list: [ AliYun ]
      # Contoh konfigurasi datasource
      datasource:
          AliYun:
              support_xen: false
              timeout: 5 # (default 50 detik)
              max_wait: 60 # (default 120 detik)
      #      metadata_urls: [ 'blah.com' ]
      # Modul yang berjalan pada tahap 'init'
      cloud_init_modules:
  7. Jalankan perintah berikut untuk memeriksa apakah versi cloud-init sesuai dengan ekspektasi Anda.

    cloud-init --version

(Opsional) Langkah 3: Konfigurasi cloud-init

Nonaktifkan inisialisasi jaringan otomatis oleh Alibaba Cloud

Jika versi cloud-init Anda adalah 18 atau lebih baru, cloud-init secara otomatis menginisialisasi konfigurasi jaringan. Konfigurasi jaringan yang dikonfigurasi secara otomatis adalah BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no. Jika konfigurasi jaringan default tidak memenuhi kebutuhan bisnis Anda, Anda dapat memodifikasi file konfigurasi cloud-init dengan melakukan operasi berikut untuk menyesuaikan konfigurasi jaringan.

  1. Jalankan perintah berikut untuk membuka file konfigurasi cloud-init default, lalu tekan i untuk memasuki mode insert.

    sudo vim /etc/cloud/cloud.cfg
  2. Tambahkan konfigurasi disabled sebelum Example datasource config untuk menonaktifkan fitur konfigurasi jaringan otomatis cloud-init.

    network:
      config: disabled
    # Ini akan menyebabkan modul set+update hostname tidak beroperasi (jika true)
    preserve_hostname: true
    
    network:
      config: disabled
    
    # Jika Anda menggunakan array datasource_list, simpan item array dalam satu baris.
    # Jika Anda menggunakan array multi baris, skrip ds-identify tidak akan membaca item array.
    
    datasource_list: [ AliYun ]
    
    # Contoh konfigurasi datasource
    datasource:
        AliYun:
            timeout: 5
            max_wait: 300

    Setelah menambahkan konfigurasi ini, cloud-init tidak lagi mengelola file konfigurasi jaringan di direktori /etc/sysconfig/network-scripts/, seperti ifcfg-eth0. Anda harus mengelola file-file ini sendiri.

  3. Tekan tombol Esc, ketik :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file konfigurasi.

  4. Menyesuaikan konfigurasi jaringan di direktori /etc/sysconfig/network-scripts/ sesuai kebutuhan Anda, seperti alamat IP, subnet mask, dan gateway.

Nonaktifkan konfigurasi hostname otomatis oleh Alibaba Cloud

Secara default, cloud-init secara otomatis mengatur hostname dan memperbarui file /etc/hostname saat instans dimulai. Jika Anda tidak ingin hostname diubah, Anda dapat memodifikasi file konfigurasi cloud-init dengan melakukan operasi berikut.

  1. Jalankan perintah berikut untuk membuka file konfigurasi cloud-init default, lalu tekan i untuk memasuki mode edit.

    sudo vim /etc/cloud/cloud.cfg
  2. Ubah preserve_hostname: false dalam file konfigurasi menjadi preserve_hostname: true.

    # Ini akan menyebabkan modul set+update hostname tidak beroperasi (jika true)
    preserve_hostname: true
  3. Tekan tombol Esc, ketik :wq, lalu tekan tombol Enter untuk menyimpan dan menutup file konfigurasi.

Langkah selanjutnya

  • Untuk server Linux yang akan dimigrasikan ke cloud, Anda dapat menggunakan Server Migration Center (SMC) untuk melakukan migrasi. Untuk informasi lebih lanjut, lihat Migrasikan server ke ECS.

  • Untuk instans ECS yang menjalankan custom image Linux di Alibaba Cloud, Anda dapat me-restart sistem untuk memverifikasi hasilnya. Jika sistem secara otomatis mengonfigurasi hostname, jaringan, dan pengaturan NTP, cloud-init telah terinstal. Sebagai contoh, jalankan perintah berikut untuk melihat file konfigurasi jaringan:

    sudo reboot
    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    Output berikut menunjukkan bahwa sistem telah mengonfigurasi pengaturan jaringan secara otomatis seperti protokol DHCP, perangkat jaringan, dan jenis perangkat melalui cloud-init.

    BOOTPROTO=dhcp
    DEVICE=eth0
    ONBOOT=yes
    STARTMODE=auto
    TYPE=Ethernet
    USERCTL=no

FAQ

  • Apa yang harus saya lakukan jika library dependensi hilang saat menginstal cloud-init menggunakan Python 3?

    Image yang berbeda mungkin kekurangan library yang berbeda. Anda dapat menginstal library yang hilang menggunakan pip, lalu menginstal cloud-init lagi.

  • Apa yang harus saya lakukan jika cloud-init berjalan tidak normal dan muncul pesan error?

    Jika package manager default sistem (seperti yum) dan manager pip telah menginstal versi library dependensi yang berbeda, konflik versi library dapat terjadi dan menyebabkan cloud-init berjalan tidak normal. Kami merekomendasikan agar Anda mengunduh library dependensi yang diperlukan berdasarkan pesan error.

    Pesan error

    Penyebab

    Perintah troubleshooting

    no setuptools module in python

    Modul python setuptools hilang

    Ambil Python 3.6 sebagai contoh:

    • CentOS/Red Hat: yum -y install python3-pip

    • Ubuntu/Debian: apt-get -y install python3-pip

    • OpenSUSE/SUSE: zypper -n install python3-pip

    File "/home/testuser/cloud-init/cloudinit/log.py", line 19, in <module>
          import six
      ImportError: No module named six  )

    Pustaka dependensi six tidak ditemukan.

    pip3 install six
    File "/home/testuser/cloud-init/cloudinit/url_helper.py", line 20, in <module>
          import oauthlib.oauth1 as oauth1
      ImportError: No module named oauthlib.oauth1  )

    Library dependensi oauthlib hilang

    pip3 install oauthlib

    Pesan error tidak menentukan library dependensi yang hilang

    Pesan error tidak dipetakan

    Berdasarkan library yang tercantum dalam file requirements.txt cloud-init, jalankan perintah berikut untuk menginstal semua library dependensi:

    pip3 install -r requirements.txt
  • Apa yang harus saya lakukan jika versi baru Python 3 yang diinstal pada instans menyebabkan cloud-init berjalan tidak normal?

    Jika Anda menginstal versi baru Python 3 (seperti Python 3.9) pada instans dan mengatur versi baru tersebut sebagai versi default (yaitu, Anda telah membuat tautan simbolik untuk versi Python 3 baru tersebut, misalnya, ln -s /usr/bin/python3.9 /usr/bin/python3), cloud-init yang terinstal berjalan tidak normal. Sebagai contoh, menjalankan cloud-init --version menghasilkan error berikut:

    $cloud-init --version
    Traceback (most recent call last):
      File "/usr/local/bin/cloud-init", line 33, in <module>
        sys.exit(load_entry_point('cloud-init==19.1.9', 'console_scripts', 'cloud-init')())
      File "/usr/local/bin/cloud-init", line 22, in importlib_load_entry_point
        for entry_point in distribution(dist_name).entry_points
      File "/usr/lib64/python3.9/importlib/metadata.py", line 524, in distribution
        return Distribution.from_name(distribution_name)
      File "/usr/lib64/python3.9/importlib/metadata.py", line 187, in from_name
        raise PackageNotFoundError(name)
    importlib.metadata.PackageNotFoundError: cloud-init

    Anda dapat menggunakan salah satu metode berikut untuk mengatasi masalah ini:

    • Metode 1: Instal ulang cloud-init menggunakan versi baru Python 3.

    • Metode 2: Modifikasi file executable cloud-init untuk mengubah path interpreter Python ke versi Python 3 sebelumnya. Ambil Python 3.6 sebagai contoh. Lakukan operasi berikut untuk memodifikasi interpreter dalam file executable cloud-init:

      1. Jalankan perintah berikut untuk membuka file cloud-init.

        vim   /usr/local/bin/cloud-init
      2. Tekan i untuk memasuki mode edit, lalu ubah konten setelah #! di awal file menjadi path Python 3.6.

        Setelah modifikasi, baris #! menjadi sebagai berikut:

        #!/usr/bin/python3.6
      3. Tekan tombol Esc untuk keluar dari mode edit, ketik :wq, lalu tekan Enter untuk menyimpan dan keluar dari file.

  • Apa yang harus saya lakukan jika user data yang ditentukan dalam instance metadata saat pembuatan instans tidak dijalankan atau gagal dijalankan setelah cloud-init diinstal?

    1. Jalankan perintah berikut di dalam instans untuk memeriksa apakah user-data ada dalam instance metadata.

      curl http://100.100.100.200/latest/user-data

      Deskripsi hasil pemeriksaan:

      • Jika user-data diatur, informasi user-data yang sesuai akan dikembalikan. Lanjutkan ke langkah berikutnya untuk troubleshooting.

      • Jika tidak ada informasi yang dikembalikan, user-data tidak diatur.

    2. Gunakan metode berikut untuk troubleshooting mengapa user-data tidak dijalankan atau gagal dijalankan.

      • Periksa apakah format user-data benar.

        User-data dijalankan oleh cloud-init. Anda harus memastikan bahwa format datanya benar. Sebagai contoh, baris pertama user-data harus dimulai dengan #!. Untuk informasi lebih lanjut, lihat Sesuaikan konfigurasi inisialisasi instans.

      • Periksa hasil eksekusi user-data dalam file log cloud-init /var/log/cloud-init.log dan troubleshooting berdasarkan pesan error.

        Contoh berikut menunjukkan informasi yang dicatat dalam file log:

         util.py[DEBUG]: Running command ['/var/lib/cloud/instance/scripts/part-001'] with allowed return codes [0] (shell=False, capture=False)
      • Lihat output standar dan output error standar dari proses eksekusi user-data.

        Dalam systemd, tool inisialisasi sistem Linux, user-data dijalankan oleh layanan sistem cloud-final.service. Anda dapat menjalankan perintah berikut untuk melihat output standar dan output error standar dari proses eksekusi user-data dan troubleshooting berdasarkan output tersebut.

        journalctl -u cloud-final.service
      • Jika metode di atas tidak dapat mengidentifikasi penyebab user-data tidak dijalankan atau gagal dijalankan, kami merekomendasikan agar Anda menyalin konten user-data ke host on-premises untuk debugging guna memeriksa apakah dapat dijalankan dengan sukses.

  • Apa yang harus saya lakukan jika konfigurasi inisialisasi sistem dan skrip instance user data tidak berjalan sesuai harapan setelah cloud-init diinstal?

    1. Jalankan perintah berikut untuk memeriksa apakah keempat layanan cloud-init diatur untuk start saat startup sistem.

      systemctl is-enabled cloud-init-local.service
      systemctl is-enabled cloud-init.service
      systemctl is-enabled cloud-config.service
      systemctl is-enabled cloud-final.service

      Jika pesan error atau disabled dikembalikan, cloud-init tidak diatur untuk start saat startup sistem.

    2. Jalankan perintah berikut untuk mengatur cloud-init agar start saat startup sistem.

      systemctl enable cloud-init-local.service
      systemctl enable cloud-init.service
      systemctl enable cloud-config.service
      systemctl enable cloud-final.service
  • Apa yang harus saya lakukan jika partisi root tidak diperluas secara otomatis di dalam instans setelah saya memperluas sistem disk saat pembuatan instans?

    Ekspansi partisi otomatis untuk instans Linux didukung oleh cloud-init. Pastikan tool growpart telah terinstal di sistem dan file cloud.cfg dikonfigurasi dengan benar.

    1. Jalankan perintah berikut untuk memeriksa apakah tool growpart telah terinstal di sistem.

      which growpart
    2. (Diperlukan secara kondisional) Jika tool tersebut belum terinstal, jalankan perintah berikut untuk menginstal tool growpart.

      • Seri RHEL:

        sudo yum -y install cloud-utils-growpart
      • Seri Debian:

        sudo apt -y install cloud-guest-utils
    3. Jalankan perintah berikut untuk memeriksa apakah konten berikut ada dalam file /etc/cloud/cloud.cfg.

      cat /etc/cloud/cloud.cfg

      Pastikan frekuensi growpart dan resizefs adalah once-per-instance:

      # Modul yang berjalan pada tahap 'init'
      cloud_init_modules:
       - migrator
       - source-address
       - pip-source
       - seed_random
       - bootcmd
       - write-files
       - [ growpart, once-per-instance ]
       - [ resizefs, once-per-instance ]
       - set_hostname
       - update_hostname
       - update_etc_hosts
       - rsyslog
       - users-groups
       - ssh
    4. (Diperlukan secara kondisional) Jika konten tersebut tidak ada, tambahkan ke file /etc/cloud/cloud.cfg.

  • Apa yang harus saya lakukan jika hostname baru tidak berlaku setelah saya memperbarui hostname di konsol dan me-restart instans ECS yang versi cloud-init-nya 0.7.6a16 atau lebih awal?

    • Deskripsi masalah

      Setelah Anda memperbarui hostname di Konsol ECS dan me-restart instans ECS, hostname baru tidak diatur. Saat Anda menjalankan perintah cloud-init --version, versi cloud-init adalah 0.7.6a16 atau lebih awal.

    • Penyebab

      Saat cloud-init memperbarui hostname melalui modul update_hostname, cloud-init menjalankan perintah hostname untuk mendapatkan hostname sistem saat ini, membaca file /var/lib/cloud/data/previous-hostname untuk mendapatkan hostname dalam cache data cloud-init, lalu memeriksa apakah keduanya konsisten. Jika konsisten, hostname diperbarui. Jika tidak konsisten, cloud-init mengasumsikan bahwa hostname telah dimodifikasi secara manual dan tidak memperbarui hostname.

      Pada sistem operasi seri Red Hat, line break dalam file /var/lib/cloud/data/previous-hostname diproses saat file dibaca, tetapi output perintah hostname tidak diproses untuk line break. Akibatnya, kedua hasil tidak konsisten dan hostname tidak diperbarui.

    • Solusi

      Anda dapat menggunakan salah satu solusi berikut untuk mengatasi masalah ini:

      • Upgrade versi cloud-init. Untuk informasi lebih lanjut, lihat Langkah 2: Instal cloud-init.

        • Jika Anda menggunakan CentOS 6 atau lebih awal, gunakan cloud-init 0.7.6a18.

        • Jika Anda menggunakan CentOS 7, gunakan cloud-init 19.1.21.

        • Jika Anda menggunakan CentOS 8 atau lebih baru, kami merekomendasikan agar Anda menggunakan cloud-init 23.2.2 atau lebih baru.

      • Proses line break secara manual.

        Modifikasi secara manual file cloud-init yang rusak cloudinit/distros/rhel.py (dapatkan path file dengan menjalankan perintah find / -name rhel.py). Rujuk distros/rhel.py: _read_hostname() missing strip on "hostname" untuk memproses line break dalam output perintah hostname. Contoh berikut menunjukkan cara memproses line break:

        diff --git a/cloudinit/distros/rhel.py b/cloudinit/distros/rhel.py
        index 0b68414e..65176e99 100644
        --- a/cloudinit/distros/rhel.py
        +++ b/cloudinit/distros/rhel.py
        @@ -143,6 +143,7 @@ class Distro(distros.Distro):
                     return util.load_file(filename).strip()
                 elif self.uses_systemd():
                     (out, _err) = util.subp(['hostname'])
        +            out = out.strip()
                     if len(out):
                         return out
                     else: