All Products
Search
Document Center

Elastic Compute Service:Instal cloud-init

Last Updated:May 21, 2026

Instal cloud-init pada server Linux agar inisialisasi otomatis hostname, jaringan, dan data pengguna instans ECS dapat berjalan.

Lihat dokumentasi resmi cloud-init.

Kasus penggunaan

cloud-init telah dipra-instal pada semua gambar publik Alibaba Cloud. Untuk custom image, ikuti saran berikut sesuai skenario Anda.

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

    Instal cloud-init sebelum memigrasikan server ke Alibaba Cloud agar instans ECS hasil migrasi dapat menjalankan tugas inisialisasi saat startup.

    Catatan

    Untuk server yang tidak dimigrasikan ke cloud, cloud-init mungkin menambahkan kompleksitas yang tidak perlu. Tentukan berdasarkan lingkungan Anda.

  • Server Linux dengan versi cloud-init sebelum 0.7.9

    Versi yang lebih baru mencakup fitur tambahan dan perbaikan bug. Lakukan upgrade ke versi yang lebih baru untuk kompatibilitas dan keamanan yang lebih baik.

  • Instans ECS di Alibaba Cloud yang belum memiliki cloud-init terinstal

    Instal cloud-init secara manual untuk mengaktifkan konfigurasi inisialisasi pada instans tersebut.

Langkah 1: Periksa versi cloud-init

  1. Masuk ke server sumber.

  2. Periksa 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 atau versinya sebelum 0.7.9, lihat Langkah 2: Instal cloud-init.

      Penting

      Versi 0.7.9 adalah versi komunitas awal yang tidak cocok untuk inisialisasi ECS. Lakukan upgrade ke versi yang lebih baru.

    • Jika versinya 18 atau lebih baru, tidak perlu instalasi. Untuk menyesuaikan konfigurasi jaringan default, lihat Nonaktifkan inisialisasi jaringan otomatis oleh Alibaba Cloud.

    • Jika versinya 19.1.21, lakukan upgrade ke Alibaba Cloud cloud-init 23.2.2. Peningkatan utama dibandingkan 19.1.21:

      • Mendukung akses metadata dalam mode security hardening. Lihat Instance metadata.

      • Perubahan lain mencakup peningkatan fitur, peningkatan performa, dan perbaikan bug. Lihat file ChangeLog.

    • Versi lainnya: tidak perlu instalasi. Lihat Langkah selanjutnya.

  3. Untuk mencegah kehilangan data, backup data server sumber Anda sebelum instalasi. Misalnya, buat Snapshot.

Langkah 2: Instal cloud-init

  • (Direkomendasikan) Alibaba Cloud cloud-init 23.2.2: Memerlukan Python 3.6 atau lebih baru. Sumber data: Aliyun.

  • Alibaba Cloud cloud-init 19.1.21: Memerlukan Python 3.6 atau lebih baru. Sumber data: Aliyun.

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

    Penting

    Komunitas Python tidak lagi mendukung Python 2.7. Gunakan versi cloud-init yang lebih baru untuk menghindari potensi masalah dependensi pustaka.

  • Versi komunitas cloud-init: Dipelihara oleh komunitas cloud-init. Versi terbaru Alibaba Cloud adalah 23.2.2. Untuk versi yang lebih baru, instal versi komunitas dari situs web resmi cloud-init.

Versi Alibaba Cloud dioptimalkan untuk layanan Alibaba Cloud. Gunakan versi Alibaba Cloud kecuali Anda memerlukan rilis komunitas yang lebih baru.

(Direkomendasikan) Alibaba Cloud cloud-init 23.2.2

Alibaba Cloud cloud-init 23.2.2 didistribusikan sebagai paket perangkat lunak. Instal paket sesuai sistem operasi Anda atau build dari source.

Tabel berikut mencantumkan tautan unduh paket untuk berbagai sistem operasi.

Jenis sistem operasi

Versi sistem operasi

Paket biner

Pemeriksaan MD5SUM

Paket source

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

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 menggunakan Debian 12 dan CentOS Stream 9 untuk menunjukkan instalasi paket biner.

Debian 12

  1. Unduh paket cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-5_all.deb
  2. Instal paket tersebut.

    sudo apt-get install -y ./cloud-init_23.2.2-5_all.deb
  3. (Opsional) Untuk mencegah upgrade ke versi open source yang lebih baru, tahan paket cloud-init pada versi saat ini.

    sudo apt-mark hold cloud-init
  4. Verifikasi versi cloud-init.

    cloud-init --version

CentOS Stream 9

  1. Unduh paket cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-5.el9.noarch.rpm
  2. Instal paket tersebut.

    sudo yum install -y ./cloud-init-23.2.2-5.el9.noarch.rpm
  3. (Opsional) Untuk mencegah upgrade ke versi open source yang lebih baru, kunci paket cloud-init pada versi saat ini.

    sudo sh -c 'echo "exclude=cloud-init" >> /etc/dnf/dnf.conf'
  4. Verifikasi versi cloud-init.

    cloud-init --version
Catatan

Secara default, Alibaba Cloud cloud-init 23.2.2 tidak lagi memetakan hostname ke alamat IPv4 privat dalam file /etc/hosts. Jika bisnis Anda memerlukan pemetaan ini, konfigurasikan secara manual. Versi OS yang lebih baru menggunakan komponen nss-myhostname untuk konektivitas hostname. Komponen ini disediakan oleh paket systemd-libs (seri Red Hat) atau paket libnss-myhostname (seri Debian) dan diaktifkan melalui file /etc/nsswitch.conf. Lihat manual nss-myhostname.

Alibaba Cloud cloud-init 19.1.21

  1. Pastikan pustaka dependensi Python PIP telah terinstal.

    Instal pustaka dependensi python3-pip pada distribusi Linux Anda:

    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. Unduh Alibaba Cloud cloud-init.

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
  3. Ekstrak paket cloud-init.

    tar -zxvf cloud-init-19.1.21.tgz
  4. Masuk ke direktori cloud-init dan instal pustaka dependensinya.

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

    cd ./tools
  6. Jalankan skrip deploy.sh untuk menginstal cloud-init.

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

    Parameter skrip deploy.sh:

    Parameter

    Deskripsi

    Contoh

    <issue>

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

    Catatan

    Jika sistem operasinya adalah CentOS Stream, atur parameter ini menjadi centos.

    centos

    <major_version>

    Nomor versi utama platform sistem operasi.

    Catatan

    Anda tidak dapat menginstal Alibaba Cloud cloud-init 19.1.21 pada Ubuntu 14.

    Nomor versi utama CentOS 7.6 adalah 7.

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

  7. Verifikasi instalasi cloud-init.

    Jika "description": "success" dikembalikan, instalasi berhasil.Alibaba Cloud cloud-init installation successful

  8. Verifikasi versi cloud-init.

    cloud-init --version

Contoh skrip shell untuk menginstal Alibaba Cloud cloud-init pada berbagai distribusi Linux. Sesuaikan skrip tersebut untuk sistem operasi Anda.

CentOS 7/8

# Periksa dan instal python3-pip.
if ! python3 -c 'import setuptools' >& /dev/null; then
  yum -y install python3-pip
fi
# Backup versi lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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 lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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 lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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 lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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 lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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 lama cloud-init.
test -d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Unduh dan ekstrak paket 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

Gambar publik Alibaba Cloud untuk CentOS 6, Debian 9, dan SUSE Linux Enterprise Server 12 telah memiliki cloud-init-0.7.6a18 terinstal secara default. Jika Anda perlu melakukan pengujian, pertama-tama jalankan perintah sudo mv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg_bak untuk membuat backup file konfigurasi.

  1. Periksa apakah sistem operasinya adalah CentOS 6, Debian 9, atau SUSE Linux Enterprise Server 12.

    cat /etc/issue
  2. Pastikan pustaka dependensi Python PIP telah terinstal.

    Instal pustaka dependensi Python 2-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 paket 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 subdirektori tools di direktori cloud-init.

    cd cloud-init-0.7.6a18/tools/
  5. Instal cloud-init.

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

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

    Parameter skrip deploy.sh:

    Parameter

    Deskripsi

    Contoh

    <issue>

    Jenis platform sistem operasi. Nilai yang valid: centos, debian, dan sles. Nilai parameter 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. Verifikasi versi cloud-init.

    cloud-init --version

Versi komunitas cloud-init

  1. Pastikan pustaka dependensi Git, Python, dan Python PIP telah terinstal.

    Instal pustaka dependensi Git, Python 3.6, dan python3-pip:

    CentOS/Red Hat Enterprise Linux

    sudo yum -y install git python36 python3-pip

    Ubuntu/Debian

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

    OpenSUSE/SUSE

    sudo zypper -n install git python36 python3-pip
  2. Unduh paket source cloud-init menggunakan Git.

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

    cd ./cloud-init
  4. Instal semua pustaka dependensi.

    sudo pip3 install -r ./requirements.txt
  5. Instal cloud-init.

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

    1. Buka file konfigurasi.

      sudo vi /etc/cloud/cloud.cfg

      vi /etc/cloud/cloud.cfg

    2. Ganti konfigurasi sebelum cloud_init_modules: dengan 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 mereferensikan 'default_user'
      # dari konfigurasi distro yang ditentukan di bawah ini
      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 $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. Verifikasi versi cloud-init.

    cloud-init --version

(Opsional) Langkah 3: Konfigurasi cloud-init

Nonaktifkan inisialisasi jaringan otomatis oleh Alibaba Cloud

Jika versi cloud-init Anda 18 atau lebih baru, jaringan akan diinisialisasi secara otomatis dengan: BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no. Untuk menyesuaikan konfigurasi jaringan, ubah file konfigurasi cloud-init.

  1. Buka file konfigurasi cloud-init default. Tekan tombol i untuk memasuki mode insert.

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

    network:
      config: disabled

    image

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

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

  4. Atur konfigurasi jaringan secara manual di direktori /etc/sysconfig/network-scripts/, seperti alamat IP, subnet mask, dan gateway.

Nonaktifkan pengaturan hostname otomatis oleh Alibaba Cloud

Secara default, cloud-init mengatur hostname dan memperbarui file /etc/hostname saat startup instans. Untuk mencegah perubahan hostname, ubah file konfigurasi cloud-init.

  1. Buka file konfigurasi cloud-init default. Tekan tombol i untuk memasuki mode edit.

    sudo vim /etc/cloud/cloud.cfg
  2. Dalam file konfigurasi, ubah preserve_hostname: false menjadi preserve_hostname: true.

    image

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

Langkah selanjutnya

  • Untuk memigrasikan server Linux ke cloud, gunakan Server Migration Center (SMC). Lihat Migrasikan server ke instans ECS.

  • Untuk instans ECS yang menjalankan custom image Linux di Alibaba Cloud, restart sistem untuk memverifikasi instalasi. Jika hostname, jaringan, dan NTP dikonfigurasi secara otomatis, cloud-init telah berhasil diinstal. Lihat file konfigurasi jaringan:

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

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

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

FAQ

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

    Pustaka yang hilang bervariasi tergantung gambar. Instal menggunakan pip, lalu instal cloud-init lagi.

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

    Jika manajer paket default (seperti yum) dan pip menginstal versi berbeda dari pustaka dependensi yang sama, konflik versi dapat menyebabkan cloud-init berjalan tidak normal. Unduh pustaka dependensi yang diperlukan berdasarkan pesan error.

    Pesan error

    Penyebab

    Perintah pemecahan masalah

    no setuptools module in python

    Modul python setuptools tidak ada.

    Untuk Python 3.6:

    • 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 ada.

    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  )

    Pustaka dependensi oauthlib tidak ada.

    pip3 install oauthlib

    Pesan error tidak menentukan pustaka dependensi yang hilang.

    Pesan error terkait tidak dipetakan.

    Berdasarkan pustaka yang tercantum dalam file requirements.txt, instal semua pustaka dependensi:

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

    Jika Anda menginstal versi baru Python 3, seperti Python 3.9, dan mengaturnya sebagai versi default dengan membuat tautan simbolik (misalnya, ln -s /usr/bin/python3.9 /usr/bin/python3), cloud-init yang terinstal mungkin berjalan tidak normal. Sebagai contoh, menjalankan cloud-init --version mengembalikan error:

    $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

    Gunakan salah satu metode berikut untuk mengatasi masalah ini:

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

    • Metode 2: Ubah file executable cloud-init untuk mengubah path interpreter Python ke versi Python 3 sebelumnya. Contoh berikut mengubah interpreter ke Python 3.6:

      1. Buka file cloud-init.

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

        Setelah dimodifikasi, baris yang dimulai dengan #! menjadi:

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

  • Setelah saya menginstal cloud-init, mengapa instance user data yang saya atur saat pembuatan instans gagal dijalankan?

    1. Periksa apakah user data ada dalam metadata instans.

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

      Hasil:

      • Jika user data dikembalikan, lanjutkan ke langkah berikutnya untuk pemecahan masalah.

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

    2. Gunakan salah satu metode berikut untuk mengidentifikasi penyebabnya.

      • Periksa apakah format user data benar.

        User data dieksekusi oleh cloud-init dan harus dalam format yang benar. Misalnya, baris pertama harus dimulai dengan #!. Lihat Sesuaikan konfigurasi inisialisasi instans.

      • Periksa file log /var/log/cloud-init.log untuk mencari error dan pecahkan masalah berdasarkan pesan error tersebut.

        Contoh entri 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 eksekusi user data.

        Di systemd, user data dijalankan melalui cloud-final.service. Lihat output standar dan error-nya untuk pemecahan masalah:

        journalctl -u cloud-final.service
      • Jika metode di atas tidak mengidentifikasi masalahnya, salin user data ke host lokal untuk debugging.

  • Setelah saya menginstal cloud-init, mengapa konfigurasi inisialisasi sistem dan skrip instance user data tidak berjalan seperti yang diharapkan?

    1. Periksa apakah keempat layanan cloud-init diaktifkan saat boot.

      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 dikembalikan error atau disabled, cloud-init tidak diaktifkan saat boot.

    2. Aktifkan cloud-init saat boot.

      systemctl enable cloud-init-local.service
      systemctl enable cloud-init.service
      systemctl enable cloud-config.service
      systemctl enable cloud-final.service
  • Saya mengubah ukuran sistem disk saat membuat instans, tetapi partisi root tidak diubah ukurannya secara otomatis. Apa yang harus saya lakukan?

    Pengubahan ukuran partisi otomatis untuk instans Linux memerlukan cloud-init. Pastikan growpart terinstal dan file cloud.cfg dikonfigurasi dengan benar.

    1. Periksa apakah growpart terinstal.

      which growpart
    2. (Diperlukan jika berlaku) Jika belum terinstal, instal.

      • Untuk seri RHEL:

        sudo yum -y install cloud-utils-growpart
      • Untuk seri Debian:

        sudo apt -y install cloud-guest-utils
    3. Periksa apakah file /etc/cloud/cloud.cfg berisi konten seperti di bawah ini.

      cat /etc/cloud/cloud.cfg

      Configuration content

    4. (Diperlukan jika berlaku) Jika konten tersebut tidak ada, tambahkan ke file /etc/cloud/cloud.cfg.

  • Untuk instans ECS dengan cloud-init 0.7.6a16 atau lebih lama, hostname tidak diperbarui setelah saya mengubahnya di konsol dan me-restart instans. Apa yang harus saya lakukan?

    • Deskripsi masalah

      Setelah Anda memperbarui hostname di Konsol ECS dan me-restart instans, hostname baru tidak berlaku. Perintah cloud-init --version menunjukkan versi 0.7.6a16 atau lebih lama.

    • Penyebab

      Saat cloud-init menggunakan modul update_hostname untuk memperbarui hostname, modul tersebut menjalankan perintah hostname untuk mendapatkan hostname sistem saat ini dan membaca /var/lib/cloud/data/previous-hostname untuk hostname yang di-cache. Modul tersebut membandingkan keduanya: jika sama, hostname diperbarui; jika berbeda, diasumsikan hostname diubah secara manual dan pembaruan dilewati.

      Pada sistem operasi berbasis Red Hat, konten yang dibaca dari /var/lib/cloud/data/previous-hostname mengandung line feed, tetapi output perintah hostname tidak. Ketidaksesuaian ini mencegah pembaruan hostname.

    • Solusi

      Gunakan salah satu solusi berikut:

      • Upgrade versi cloud-init. Lihat Langkah 2: Instal cloud-init.

        • Untuk CentOS 6 dan lebih lama, gunakan cloud-init 0.7.6a18.

        • Untuk CentOS 7, gunakan cloud-init 19.1.21.

        • Untuk CentOS 8 atau lebih baru, gunakan cloud-init 23.2.2 atau versi yang lebih baru.

      • Atasi line feed secara manual.

        Perbaiki secara manual file cloudinit/distros/rhel.py yang rusak di cloud-init (gunakan find / -name rhel.py untuk menemukan file tersebut). Rujuk distros/rhel.py: _read_hostname() missing strip on "hostname" untuk memproses line feed pada output perintah hostname:

        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: