Melakukan instalasi berulang dan dapat diduplikasi untuk sistem operasi sangat penting, terutama di lingkungan perusahaan. Untuk melakukan instalasi tanpa pengawasan, Ubuntu sebelumnya mendukung file Debian preseed dan Kickstart. Namun, mulai dari Ubuntu Server 20.04 dan versi 23.04 Ubuntu Desktop, metode instalasi tersebut sudah tidak digunakan lagi, dan distribusi ini mengadopsi format autoinstall baru yang memanfaatkan cloud-init.
Dalam tutorial ini, kita akan belajar cara menulis file autoinstall Ubuntu dan cara menggunakannya untuk melakukan instalasi tanpa pengawasan dan dapat diduplikasi.
Dalam tutorial ini Anda akan belajar:
- Cara menulis file autoinstall dan menentukan instalasi Ubuntu dalam segala aspeknya
- Cara meneruskan file autoinstall ke installer desktop dan server Ubuntu
- Cara menulis dan melakukan instalasi Ubuntu tanpa pengawasan dengan autoinstall
Perangkat Lunak dan Prasyarat
- Sistem: Ubuntu Server >= 20.04 / Ubuntu Desktop >= 23.04
- Perangkat Lunak: Tidak ada perangkat lunak khusus yang dibutuhkan
- Lainnya: Tidak ada
Konvensi:
#
– Memerlukan perintahlinux-commands
tertentu untuk dijalankan dengan hak akses root, baik secara langsung sebagai pengguna root atau dengan menggunakan perintahsudo
.$
– Memerlukan perintahlinux-commands
tertentu untuk dijalankan sebagai pengguna biasa tanpa hak istimewa.
Pengenalan File Autoinstall
Sebagai distribusi turunan Debian, Ubuntu awalnya mendukung file preseed sebagai metode untuk melakukan instalasi tanpa pengawasan dan dapat diduplikasi. Dukungan untuk sintaks instalasi Kickstart kemudian ditambahkan sebagai lapisan kompatibilitas, tetapi tidak semua perintah Kickstart diimplementasikan. Mulai dari Ubuntu Server 20.04, dan sejak Ubuntu Desktop 23.04, Ubuntu mengadopsi metode instalasi otomatisnya sendiri, berdasarkan sintaks YAML: autoinstall.
Hal pertama yang biasanya kita lihat dalam file autoinstall adalah komentar “#cloud-config”: ini diperlukan jika kita ingin file tersebut diproses oleh cloud-init (lebih lanjut tentang ini nanti). Key utama yang digunakan dalam file konfigurasi adalah autoinstall
; versi sintaks file, sebaliknya, ditentukan dengan key version
. Saat penulisan ini, hanya versi 1 yang tersedia:
YAML
#cloud-config
autoinstall:
version: 1
Use code with caution.content_copy
Memilih Sumber
Untuk menentukan “lingkungan” yang ingin kita instal, kita dapat menggunakan key source
, yang menggunakan pemetaan sebagai nilainya. Di dalam pemetaan ini, kita meneruskan nama lingkungan yang ingin kita instal sebagai nilai dari key id
. Saat menginstal desktop Ubuntu, misalnya, kita dapat memilih antara “ubuntu-minimal-desktop” dan “ubuntu-desktop” lengkap. Jika key dihilangkan, sumber pertama yang tersedia akan digunakan:
YAML
#cloud-config
autoinstall:
source:
id: ubuntu-desktop-minimal
Use code with caution.content_copy
Mengatur Lokal Sistem, Zona Waktu, dan Tata Letak Keyboard
Untuk mengatur lokal sistem, kita menggunakan key locale
. Sebaliknya, pengaturan keyboard ditentukan melalui key keyboard
. Key ini menggunakan pemetaan sebagai nilai; dalam contoh di bawah ini kita hanya menentukan layout
yang ingin kita gunakan (us); dimungkinkan juga untuk menentukan parameter lain, seperti varian layout. Terakhir, untuk mengatur zona waktu sistem, kita menggunakan key timezone
:
YAML
#cloud-config
autoinstall:
locale: en_US.UTF-8
keyboard:
layout: us
timezone: Europe/Rome
Use code with caution.content_copy
Konfigurasi Antarmuka Jaringan
Untuk mengkonfigurasi jaringan sistem, kita menggunakan key network
, menggunakan sintaks netplan
. Dalam contoh di bawah ini, saya menentukan bahwa saya ingin antarmuka Ethernet enp1s0
dikonfigurasi secara otomatis melalui dhcp4:
YAML
#cloud-config
autoinstall:
network:
version: 2
ethernets:
enp1s0:
dhcp4: true
Use code with caution.content_copy
Konfigurasi Nama Host dan Pengguna Awal Sistem
Untuk menggunakan sistem kita dengan aman, kita perlu membuat setidaknya satu pengguna tanpa hak istimewa. Kita juga perlu mengatur nama host sistem. Kedua aspek ini dikelola melalui key identity
. Key ini menggunakan pemetaan sebagai nilai; kita mendefinisikan username
, password
, dan hostname
, dengan key masing-masing:
YAML
#cloud-config
autoinstall:
identity:
username: egidio
hostname: linuxconfig
password: '$6$mzOdSSVUfhWRNhcX$mkm.drDfOLfpZRX/58ouJqMvit
Use code with caution.
Konfigurasi Server SSH
Dalam file autoinstall, kita memiliki kesempatan untuk menentukan apakah kita ingin menginstal dan mengkonfigurasi server SSH. Kita dapat mengaktifkan atau menonaktifkan autentikasi kata sandi, dan akhirnya meneruskan daftar kunci publik resmi yang akan ditambahkan ke file authorized_keys
pengguna awal:
YAML
#cloud-config
autoinstall:
ssh:
install-server: true
allow-pw: true
authorized-keys: []
Use code with caution.content_copy
Menginstal Paket Tambahan
Untuk menentukan daftar paket tambahan yang akan ditarik oleh pengelola paket apt-get
sebagai bagian dari instalasi sistem, kita dapat menggunakan key packages
. Berikut adalah contohnya:
YAML
#cloud-config
autoinstall:
packages:
- git
- python3-pip
Use code with caution.content_copy
Untuk menginstal paket snap
, sebaliknya, kita menggunakan kata kunci snaps
. Kata kunci ini menerima daftar pemetaan sebagai nilai. Dalam setiap pemetaan, kita menggunakan key name
, channel
, dan classic
untuk menentukan, masing-masing, nama paket snap yang akan diinstal, saluran dari mana snap akan diinstal (defaultnya adalah “stable”), dan apakah paket snap akan diinstal dalam mode klasik (defaultnya adalah “false”):
YAML
#cloud-config
autoinstall:
snaps:
- name: pycharm-community
channel: stable
classic: true
Use code with caution.content_copy
Menentukan Aksi Pasca-Instalasi
Untuk menentukan aksi pasca-instalasi, kita menggunakan key shutdown
. Key ini menerima dua nilai yang mungkin: “poweroff” dan “reboot”:
YAML
#cloud-config
autoinstall:
shutdown: reboot
Use code with caution.content_copy
Menentukan Pengaturan Penyimpanan
Salah satu aspek terpenting dari instalasi sistem adalah pengaturan partisi. Saat menginstal Ubuntu secara interaktif, kita dapat memilih di antara beberapa tata letak yang telah ditentukan sebelumnya, atau membuat pengaturan khusus. Kita dapat melakukan hal yang sama saat melakukan instalasi otomatis. Tata letak yang telah ditentukan sebelumnya yang tersedia adalah: lvm
, direct
, dan zfs
.
Tata letak lvm
adalah default: tata letak ini membuat partisi standar EFI (dalam kasus sistem UEFI modern) dan boot, dan menginstal sisa sistem pada volume logis LVM
. Ukuran volume logis root ditentukan menurut kebijakan: ketika diatur ke “scaled” (default), jumlah ruang yang dialokasikan ke volume logis tergantung pada ukuran grup volume. Bila memungkinkan, beberapa ruang dibiarkan tidak digunakan, untuk memungkinkan pembuatan snapshot:
Ukuran Grup Volume | Ukuran LV Root |
---|---|
Kurang dari 10 GiB | 100% dari ruang yang tersedia |
Antara 10 GiB dan 20 GiB | 10 GiB |
Antara 20 GiB dan 200 GiB | 50% dari ruang yang tersedia |
Lebih dari 200 GiB | 100 GiB |
drive_spreadsheetExport to Sheets
Ketika kebijakan diatur ke “all”, sebaliknya, semua ruang yang tersedia dialokasikan ke volume logis root. Dalam konteks ini, key password
dapat digunakan untuk mengaktifkan enkripsi LUKS, dan untuk memberikan kata sandi enkripsi:
YAML
#cloud-config
autoinstall:
storage:
layout:
name: lvm
policy: all
password: mysecretpassword
Use code with caution.content_copy
Tata letak direct
menginstal Ubuntu pada partisi standar. Pada sistem UEFI, tata letak ini membuat partisi EFI dengan ukuran 1 GiB, dan mengalokasikan sisa ruang ke partisi root.
Terakhir, tata letak zfs
menginstal sistem pada kumpulan ZFS
, membuat beberapa volume. Di bawah ini Anda dapat melihat tangkapan layar pengaturan zfs
setelah instalasi Ubuntu baru:
Memilih Disk untuk Instalasi
Selain tata letak partisi, kita dapat secara eksplisit mengatur disk mana yang akan digunakan untuk instalasi. Kita melakukan ini melalui key match
. Kita dapat memilih disk berdasarkan jalur, vendor, model, serial, dan lainnya. Jika kata kunci dihilangkan, instalasi terjadi pada disk terbesar yang tersedia. Dalam contoh di bawah ini, kita memilih disk berdasarkan jalur (/dev/vda):
YAML
#cloud-config
autoinstall:
storage:
layout:
name: lvm
match:
path: /dev/vda
Use code with caution.content_copy
Membuat Tata Letak Kustom
Untuk mendefinisikan tata letak partisi kustom, kita menggunakan kata kunci config
. Kata kunci ini menerima daftar pemetaan sebagai nilai, masing-masing menggambarkan perintah dari installer curtin
.
Memilih Disk untuk Instalasi
Selain tata letak partisi, kita dapat secara eksplisit mengatur disk mana yang akan digunakan untuk instalasi. Kita melakukan ini melalui key match
. Kita dapat memilih disk berdasarkan jalur, vendor, model, serial, dan lainnya. Jika kata kunci dihilangkan, instalasi terjadi pada disk terbesar yang tersedia. Dalam contoh di bawah ini, kita memilih disk berdasarkan jalur (/dev/vda):
YAML
#cloud-config
autoinstall:
storage:
layout:
name: lvm
match:
path: /dev/vda
Use code with caution.content_copy
Membuat Tata Letak Kustom
Untuk mendefinisikan tata letak partisi kustom, kita menggunakan kata kunci config
. Kata kunci ini menerima daftar pemetaan sebagai nilai, masing-masing menggambarkan perintah dari installer curtin
. Mari kita lihat contoh. Misalkan kita ingin menginstal Ubuntu pada pengaturan LVM LUKS, dengan membuat partisi berikut:
- Sebuah partisi EFI kecil 600 MiB, diformat dalam fat32, untuk dipasang di /boot/efi
- Partisi boot 1 GiB, diformat dalam ext4 untuk dipasang di /boot
- Partisi ketiga yang membentang di sisa ruang, dienkripsi dengan LUKS, dan digunakan sebagai volume fisik LVM
- Satu volume logis LVM 45 GiB untuk dipasang di /
- Satu volume logis LVM 50 GiB untuk dipasang di /home
Berikut adalah cara kita melakukannya. Hal pertama yang perlu kita lakukan adalah menggunakan perintah disk
. Ini digunakan untuk menyiapkan disk, dan membuat tabel partisi:
YAML
#cloud-config
autoinstall:
storage:
config:
- id: disk-vda
type: disk
ptable: gpt
path: /dev/vda
wipe: superblock-recursive
Use code with caution.content_copy
Dengan kata kunci id
, kita memberikan pengenal untuk bagian dan perintah: ini memungkinkan kita untuk mereferensikan disk saat menggunakan perintah lain. Dengan kata kunci type
, sebaliknya, kita menentukan perintah yang ingin kita jalankan, yang dalam hal ini adalah “disk”.
Ketika key ptable
hadir, tabel partisi tipe yang ditentukan dibuat pada disk. Dalam hal ini kita menggunakan “gpt” sebagai nilainya. Kata kunci path
digunakan untuk mengidentifikasi disk berdasarkan jalurnya (/dev/vda).
Kata kunci wipe
sangat penting: saat digunakan, ini menghancurkan konten disk atau partisi. Ada banyak jenis “wipe” yang dapat kita gunakan: superblock
, superblock-recursive
, zero
, random
, dan pvremove
. Kita menggunakan superblock
ketika kita ingin menghapus hanya superblock disk, dan superblock-recursive
ketika kita ingin menghapus juga eventual embed superblock (mereka mungkin ada saat menggunakan LVM, misalnya). Menggunakan wipe zero
atau random
, kita dapat menimpa disk dengan nol atau data acak, masing-masing. Terakhir, pvremove
secara khusus menghapus metadata LVM untuk memastikan disk bukan bagian dari pengaturan LVM. Dalam contoh di atas, kita menggunakan superblock-recursive
, yang seharusnya cukup dalam banyak kasus.
Membuat Partisi Standar dengan Perintah “partition”
Sekarang kita perlu membuat tiga partisi “standar” pada disk. Yang pertama adalah partisi EFI, yang kedua adalah partisi yang akan dipasang di /boot, dan yang ketiga adalah partisi yang akan dienkripsi dengan LUKS, dan digunakan sebagai volume fisik LVM. Untuk membuat partisi, kita menggunakan perintah partition
. Dalam contoh di bawah ini, demi kejelasan, kita fokus pada perintah saat ini, menghilangkan perintah yang kita gunakan sebelumnya:
YAML
#cloud-config
autoinstall:
storage:
config:
# [...]
- id: efipart
type: partition
device: disk-vda
offset: 1048576
size: 600M
flag: boot
grub_device: true
- id: bootpart
type: partition
device: disk-vda
size: 1G
- id: pvpart
type: partition
device: disk-vda
size: -1
Use code with caution.content_copy
Karena partisi “efipart” adalah yang pertama, kita menggunakan kata kunci offset
untuk memastikan dibuat pada 1MiB dari awal disk (nilainya diberikan dalam byte: 1048576). Kita menggunakan kata kunci flag
untuk menentukan flag yang akan disetel pada partisi, “boot” dalam hal ini. Terakhir, kita menggunakan kata kunci grub_device
untuk memastikan GRUB diinstal pada partisi.
Dalam semua definisi,tunesharemore_vert