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.
CatatanUntuk 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
-
Masuk ke server sumber.
-
Periksa apakah cloud-init sudah terinstal.
Seri CentOS
rpm -qa | grep -i cloud-init pip list | grep -i cloud-initSeri 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.
PentingVersi 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.
-
-
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.PentingKomunitas 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.
Contoh berikut menggunakan Debian 12 dan CentOS Stream 9 untuk menunjukkan instalasi paket biner.
Debian 12
-
Unduh paket cloud-init.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-5_all.deb -
Instal paket tersebut.
sudo apt-get install -y ./cloud-init_23.2.2-5_all.deb -
(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 -
Verifikasi versi cloud-init.
cloud-init --version
CentOS Stream 9
-
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 -
Instal paket tersebut.
sudo yum install -y ./cloud-init-23.2.2-5.el9.noarch.rpm -
(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' -
Verifikasi versi cloud-init.
cloud-init --version
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
-
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-pipUbuntu/Debian
sudo apt-get -y install python3-pipOpenSUSE/SUSE
sudo zypper -n install python3-pip -
Unduh Alibaba Cloud cloud-init.
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz -
Ekstrak paket cloud-init.
tar -zxvf cloud-init-19.1.21.tgz -
Masuk ke direktori cloud-init dan instal pustaka dependensinya.
cd ./cloud-init-19.1.21 pip3 install -r ./requirements.txt -
Masuk ke subdirektori tools di direktori cloud-init.
cd ./tools -
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.
CatatanJika sistem operasinya adalah CentOS Stream, atur parameter ini menjadi centos.
centos
<major_version>
Nomor versi utama platform sistem operasi.
CatatanAnda 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. -
Verifikasi instalasi cloud-init.
Jika
"description": "success"dikembalikan, instalasi berhasil.
-
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
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.
-
Periksa apakah sistem operasinya adalah CentOS 6, Debian 9, atau SUSE Linux Enterprise Server 12.
cat /etc/issue -
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-pipDebian 9
sudo apt-get -y install python2-pip 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.tgzMasuk ke subdirektori tools di direktori cloud-init.
cd cloud-init-0.7.6a18/tools/-
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.
-
Verifikasi versi cloud-init.
cloud-init --version
Versi komunitas cloud-init
-
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-pipUbuntu/Debian
sudo apt-get -y install git python36 python3-pipOpenSUSE/SUSE
sudo zypper -n install git python36 python3-pip -
Unduh paket source cloud-init menggunakan Git.
git clone https://git.launchpad.net/cloud-init -
Masuk ke direktori cloud-init.
cd ./cloud-init -
Instal semua pustaka dependensi.
sudo pip3 install -r ./requirements.txt -
Instal cloud-init.
python3 setup.py install -
Ubah file konfigurasi cloud.cfg.
-
Buka file konfigurasi.
sudo vi /etc/cloud/cloud.cfg
-
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:
-
-
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.
-
Buka file konfigurasi cloud-init default. Tekan tombol
iuntuk memasuki mode insert.sudo vim /etc/cloud/cloud.cfg -
Sebelum
Example datasource config, tambahkan konfigurasi disabled untuk menonaktifkan fitur konfigurasi jaringan otomatis cloud-init.network: config: disabled
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. -
Tekan tombol
Esc, masukkan:wq, lalu tekan tombolEnteruntuk menyimpan dan menutup file. -
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.
-
Buka file konfigurasi cloud-init default. Tekan tombol
iuntuk memasuki mode edit.sudo vim /etc/cloud/cloud.cfg -
Dalam file konfigurasi, ubah
preserve_hostname: falsemenjadipreserve_hostname: true.
-
Tekan tombol
Esc, masukkan:wq, lalu tekan tombolEnteruntuk 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-eth0Output 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
