Product SiteDocumentation Site

12.3. Pemasangan Otomatis

Administrator Falcot Corp, seperti banyak administrator dari layanan TI yang besar, membutuhkan alat untuk menginstal (atau menginstal ulang) dengan cepat, dan secara otomatis jika mungkin, mesin-mesin baru mereka.
Persyaratan ini dapat dipenuhi oleh berbagai macam solusi. Di satu sisi, alat-alat generik seperti SystemImager menangani hal ini dengan menciptakan sebuah image yang didasarkan pada mesin templat, kemudian menyebarkan image ke sistem target; di ujung lain spektrum, penginstal Debian standar dapat diprabibit dengan berkas konfigurasi yang memberikan jawaban-jawaban untuk pertanyaan-pertanyaan yang ditanyakan selama proses instalasi. Sebagai semacam jalan tengah, alat hibrida seperti FAI (Fully Automatic Installer) menginstal mesin menggunakan sistem pemaketan, tetapi juga menggunakan infrastrukturnya sendiri untuk tugas-tugas yang lebih spesifik bagi penyebaran masif (seperti memulai, mempartisi, mengkonfigurasi, dan seterusnya).
Masing-masing solusi ini memiliki pro dan kontra: SystemImager bekerja secara independen dari sebarang sistem pemaketan tertentu, yang memungkinkan untuk mengatur set besar mesin menggunakan beberapa distro Linux yang berbeda. Ini juga mencakup sebuah sistem pemutakhiran yang tidak memerlukan instalasi ulang, tapi sistem pemutakhiran ini hanya dapat diandalkan jika mesin tidak diubah secara independen; dengan kata lain, pengguna harus tidak memperbarui perangkat lunak mereka sendiri, atau menginstal perangkat lunak lainnya. Demikian pula, pembaruan keamanan harus tidak otomatis, karena mereka harus pergi melalui image referensi terpusat yang dikelola oleh SystemImager. Solusi ini juga memerlukan mesin target yang homogen, bila tidak banyak image yang berbeda mesti disimpan dan dikelola (image i386 tidak akan cocok pada mesin powerpc, dan sebagainya).
Di sisi lain, instalasi otomatis menggunakan debian-installer dapat beradaptasi dengan spesifik dari setiap mesin: installer akan mengambil paket kernel dan perangkat lunak yang sesuai dari repositori yang relevan, mendeteksi perangkat keras yang tersedia, mempartisi seluruh hard disk untuk mengambil keuntungan dari semua ruang yang tersedia, menginstal sistem Debian yang sesuai, dan mengatur sebuah bootloader yang sesuai. Namun, pemasang standar hanya akan menginstal versi Debian standar, dengan sistem dasar dan satu set "tugas" yang terprapilih; ini menghalang menginstal sistem tertentu dengan aplikasi yang tidak dipaketkan. Memenuhi kebutuhan khusus ini memerlukan penyesuaian installer... Untungnya, installer sangat modular, dan ada alat untuk mengotomasi kebanyakan pekerjaan yang diperlukan untuk kustomisasi ini, yang paling penting simple-CDD (CDD adalah singkatan Custom Debian Derivative). Bahkan solusi simple-CDD, bagaimanapun, hanya menangani instalasi awal; hal ini biasanya tidak masalah karena perangkat APT memungkinkan penggelaran pemutakhiran yang efisien nanti.
Kita hanya akan memberikan gambaran kasar FAI, dan melewati SystemImager sama sekali (yang tidak ada lagi di Debian), agar fokus lebih bersungguh-sungguh pada debian-installer dan simple-CDD, yang lebih menarik dalam konteks hanya Debian.

12.3.1. Fully Automatic Installer (FAI, Pemasang Otomatis Sepenuhnya)

Fully Automatic Installer mungkin adalah sistem penggelaran otomatis tertua untuk Debian, yang menjelaskan statusnya sebagai referensi; tetapi sifatnya yang sangat fleksibel hanya mengkompensasi kompleksitas yang melibatkannya.
FAI memerlukan sebuah sistem server untuk menyimpan informasi penggelaran dan memungkinkan mesin target untuk boot dari jaringan. Server ini memerlukan paket fai-server (atau fai-quickstart, yang juga membawa elemen-elemen yang diperlukan untuk sebuah konfigurasi standar).
FAI menggunakan pendekatan khusus untuk menentukan berbagai profil yang dapat diinstal. Bukan hanya menduplikasi sebuah referensi instalasi, FAI adalah sebuah installer penuh, sepenuhnya dikonfigurasi melalui serangkaian berkas dan skrip yang disimpan di server; lokasi default /srv/fai/config/ tidak secara otomatis diciptakan, sehingga administrator perlu menciptakannya beserta berkas-berkas yang relevan. Hampir setiap kali, berkas-berkas ini akan disesuaikan dari berkas contoh yang tersedia dalam dokumentasi untuk paket fai-doc, khususnya direktori /usr/share/doc/fai-doc/examples/simple/.
Once the profiles are defined, the fai-setup command generates the elements required to start a FAI installation; this mostly means preparing or updating a minimal system (NFS-root) used during installation. An alternative is to generate a dedicated boot CD with fai-cd.
Menciptakan semua berkas konfigurasi ini memerlukan pemahaman tentang cara FAI bekerja. Suatu proses instalasi biasanya tersusun dari langkah-langkah berikut:
  • mengambil sebuah kernel dari jaringan, dan mem-boot itu;
  • mengait sistem berkas root dari NFS;
  • mengeksekusi /usr/sbin/fai, yang mengontrol seluruh proses (langkah berikutnya karena itu diprakarsai oleh skrip ini);
  • menyalin ruang konfigurasi dari server ke /fai/;
  • menjalankan fai-class. Skrip /fai/class/[0-9][0-9]* dijalankan sesuai gilirannya, dan mengembalikan nama "kelas" yang berlaku untuk mesin yang diinstal; informasi ini akan berfungsi sebagai dasar untuk langkah-langkah berikut. Hal ini memungkinkan untuk beberapa fleksibilitas dalam mendefinisikan layanan yang akan diinstal dan dikonfigurasi.
  • mengambil sejumlah variabel konfigurasi, tergantung pada kelas yang relevan;
  • mempartisi disk dan memformat partisi, berdasarkan informasi yang diberikan dalam /fai/disk_config/kelas;
  • mengaitkan partisi yang disebut;
  • memasang sistem dasar;
  • memprabibit basis data Debconf dengan fai-debconf;
  • mengambil daftar paket yang tersedia untuk APT;
  • menginstal paket-paket yang tercantum dalam /fai/package_config/kelas;
  • menjalankan skrip pasca konfigurasi, /fai/scripts/kelas/[0-9][0-9]*;
  • merekam log instalasi, melepas kait partisi, dan reboot.

12.3.2. Memprabibit Debian-Installer

Pada akhir hari, alat yang terbaik untuk menginstal sistem Debian secara logis mestinya adalah Debian installer yang resmi. Inilah mengapa, sejak dari awal, debian-installer telah dirancang untuk penggunaan otomatis, mengambil keuntungan dari infrastruktur yang disediakan oleh debconf. Yang kedua memungkinkan, di satu sisi, untuk mengurangi jumlah pertanyaan yang diajukan (pertanyaan-pertanyaan tersembunyi akan menggunakan jawaban default yang disediakan), dan di sisi lain, untuk menyediakan jawaban default secara terpisah, sehingga instalasi bisa non-interaktif. Fitur terakhir ini dikenal sebagai preseeding.

12.3.2.1. Menggunakan Berkas Preseed

Ada beberapa tempat dimana installer bisa memperoleh berkas preseed:
  • di initrd yang digunakan untuk memulai mesin; dalam kasus ini, prabibit terjadi pada awal instalasi, dan semua pertanyaan dapat dihindari. Berkas hanya perlu disebut preseed.cfg dan disimpan dalam root initrd.
  • pada media boot (CD atau kunci USB); prabibit kemudian terjadi segera setelah media dipasang, yang berarti tepat setelah pertanyaan tentang bahasa dan tata letak papan ketik. Parameter boot preseed/file dapat digunakan untuk menunjukkan lokasi berkas prabibit (misalnya, /cdrom/preseed.cfg ketika instalasi dilakukan dari CD-ROM, atau /hd-media/preseed.cfg dalam kasus kunci USB).
  • dari jaringan; prabibit kemudian hanya terjadi setelah jaringan (secara otomatis) dikonfigurasi; parameter boot yang relevan adalah kemudian preseed/url=http://server/preseed.cfg.
Sekilas, menyertakan berkas prabibit di initrd tampak seperti solusi yang paling menarik; namun, ini jarang digunakan dalam praktek, karena menghasilkan installer initrd agak rumit. Kedua solusi yang lain lebih umum, terutama karena parameter boot menyediakan cara lain untuk memprabibit jawaban atas pertanyaan pertama dari proses instalasi. Cara yang biasa untuk menghindari kerepotan mengetik parameter boot ini di setiap instalasi adalah dengan menyimpan mereka ke dalam konfigurasi untuk isolinux (dalam kasus CD-ROM) atau syslinux (kunci USB).

12.3.2.2. Membuat Berkas Preseed

Prabibit adalah berkas teks biasa, dimana setiap baris berisi jawaban atas satu pertanyaan Debconf. Baris dipecah ke empat bidang yang dipisahkan oleh spasi atau tab, seperti, misalnya, d-i mirror/suite string stable:
  • bidang pertama adalah "pemilik" pertanyaan; "d-i" digunakan untuk pertanyaan-pertanyaan yang relevan dengan installer, tetapi juga bisa berupa nama paket untuk pertanyaan-pertanyaan yang datang dari paket-paket Debian;
  • ruas kedua adalah pengidentifikasi untuk pertanyaan;
  • ketiga, jenis pertanyaan;
  • ke empat dan ruas terakhir memuat nilai untuk jawaban. Perhatikan bahwa ini harus dipisahkan dari ruas ke tiga dengan satu spasi; jika ada lebih dari satu, karakter spasi yang mengikuti dianggap bagian dari nilai.
Cara termudah untuk menulis berkas preseed adalah untuk menginstal sebuah sistem dengan tangan. Kemudian debconf-get-selections --installer akan memberikan jawaban tentang installer. Jawaban tentang paket lainnya dapat diperoleh dengan debconf-get-selections. Namun, solusi yang lebih bersih adalah dengan menulis berkas preseed dengan tangan, mulai dari contoh dan dokumentasi referensi: dengan pendekatan seperti itu, hanya pertanyaan yang jawaban bakunya perlu ditimpa dapat diprabibit; menggunakan parameter boot priority=critical akan menginstruksikan Debconf untuk hanya mengajukan pertanyaan yang kritis, dan menggunakan jawaban baku bagi yang lain.

12.3.2.3. Membuat sebuah Media Boot Ubahan

Mengetahui di mana untuk menyimpan berkas preseed itu baik, tapi lokasi bukan segalanya: kita harus, dengan satu cara atau lainnya, mengubah media boot instalasi untuk mengubah parameter boot dan menambahkan berkas preseed.
12.3.2.3.1. Boot dari Jaringan
When a computer is booted from the network, the server sending the initialization elements also defines the boot parameters. Thus, the change needs to be made in the PXE configuration for the boot server; more specifically, in its /tftpboot/pxelinux.cfg/default configuration file. Setting up network boot is a prerequisite; see the Installation Guide for details.
12.3.2.3.2. Mempersiapkan sebuah Flash Disk USB yang Dapat Di-boot
Setelah kunci USB disiapkan (lihat Bagian 4.1.2, “Booting dari USB Key”), diperlukan beberapa operasi tambahan. Dengan asumsi kunci isi tersedia dalam /media/usbdisk/:
  • salin berkas preseed ke /media/usbdisk/preseed.cfg
  • edit /media/usbdisk/syslinux.cfg dan tambahkan parameter boot yang diperlukan (lihat contoh di bawah).

Contoh 12.2. berkas syslinux.cfg dan parameter preseed

default vmlinuz
append preseed/file=/hd-media/preseed.cfg locale=en_US.UTF-8 keymap=us language=us country=US vga=788 initrd=initrd.gz  --
12.3.2.3.3. Membuat suatu Image CD-ROM
Kunci USB adalah media baca-tulis, jadi mudah bagi kita untuk menambahkan berkas ke sana dan mengubah beberapa parameter. Dalam kasus CD-ROM, operasi lebih kompleks, karena kita perlu melakukan regenerasi image ISO penuh. Tugas ini ditangani oleh debian-cd, tapi alat ini agak aneh untuk digunakan: dibutuhkan cermin lokal, dan itu memerlukan pemahaman tentang semua pilihan yang disediakan oleh /usr/share/debian-cd/CONF.sh; bahkan kemudian, make harus dipanggil beberapa kali. /usr/share/debian-cd/README sangat dianjurkan untuk dibaca.
Setelah itu semua, debian-cd selalu beroperasi dengan cara yang sama: direktori "image" dengan isi eksak CD-ROM dibuat, lalu dikonversi ke berkas ISO dengan alat seperti genisoimage, mkisofs, atau xorriso. Direktori image diselesaikan setelah langkah make image-trees debian-cd. Pada saat itu, kita menyisipkan berkas preseed ke dalam direktori yang sesuai (biasanya $TDIR/$CODENAME/CD1/, $TDIR dan $CODENAME adalah parameter yang didefinisikan oleh berkas konfigurasi CONF.sh). CD-ROM menggunakan isolinux sebagai bootloader, dan berkas konfigurasinya harus diadaptasi dari apa yang dihasilkan oleh debian-cd, untuk memasukkan parameter boot yang diperlukan (berkas tepatnya adalah $TDIR/$CODENAME/boot1/isolinux/isolinux.cfg). Kemudian proses "normal" dapat dilanjutkan, dan kita dapat meneruskan menghasilkan image ISO dengan make image CD=1 (atau make images jika ada beberapa CD-ROM yang dihasilkan).

12.3.3. Simple-CDD: Solusi Semua-Jadi-Satu

Hanya menggunakan berkas preseed ini tidak cukup untuk memenuhi semua persyaratan yang mungkin muncul untuk penggelaran besar. Meskipun dimungkinkan untuk mengeksekusi beberapa skrip pada akhir proses penginstalan normal, pemilihan set paket yang akan diinstal ini tetap tidak cukup fleksibel (pada dasarnya, hanya "task" yang dapat dipilih); lebih penting, ini hanya memungkinkan menginstal paket-paket Debian yang resmi, dan mencegah dipasangnya yang dihasilkan secara lokal.
Di sisi lain, debian-cd mampu mengintegrasikan paket eksternal, dan debian-installer dapat diperluas dengan memasukkan langkah-langkah baru dalam proses instalasi. Dengan menggabungkan kemampuan-kemampuan ini, seharusnya mungkin untuk menciptakan sebuah installer yang disesuaikan yang memenuhi kebutuhan kita; itu bahkan dapat mengkonfigurasi beberapa layanan setelah membuka paket yang diperlukan. Untungnya, hal ini tidak hanya sebuah hipotesis, karena ini adalah persis apa yang dilakukan oleh Simple-CDD (dalam paket simple-cdd).
Tujuan Simple-CDD adalah untuk memungkinkan orang agar dengan mudah membuat distribusi yang berasal dari Debian, dengan memilih subset dari paket yang tersedia, memprakonfigurasi mereka dengan Debconf, menambahkan perangkat lunak khusus, dan menjalankan skrip-skrip ubahan pada akhir proses instalasi. Ini sesuai dengan filosofi "sistem operasi universal", karena siapa pun dapat mengadaptasi ke kebutuhan mereka sendiri.

12.3.3.1. Menciptakan Profil

Simple-CDD mendefinisikan "profil" yang sesuai dengan konsep "kelas" FAI, dan sebuah mesin dapat memiliki beberapa profil (yang ditentukan pada saat instalasi). Profil didefinisikan oleh satu set berkas profiles/profil.*:
  • berkas .description berisi satu baris deskripsi untuk profil;
  • berkas .packages berisi daftar paket yang akan secara otomatis diinstal jika profil dipilih;
  • berkas .downloads berisi daftar paket yang akan disimpan ke media instalasi, tetapi tidak harus diinstal;
  • berkas .preseed berisi informasi preseed untuk pertanyaan Debconf (untuk installer dan atau paket);
  • berkas .postinst berisi skrip yang akan dijalankan pada akhir proses instalasi;
  • terakhir, berkas .conf memungkinkan mengubah beberapa parameter Simple-CDD berdasarkan profil yang akan dimasukkan ke dalam image.
Profil default memiliki peran tertentu, karena selalu dipilih; ini berisi minimal yang diperlukan oleh Simple-CDD untuk bekerja. Satu-satunya hal yang biasanya disesuaikan dalam profil ini adalah parameter preseed simple-cdd/profiles: hal ini memungkinkan menghindari pertanyaan, diperkenalkan oleh Simple-CDD, tentang profil apa yang akan dipasang.
Perhatikan juga bahwa perintah akan perlu dijalankan dari direktori induk direktori profil.

12.3.3.2. Mengkonfigurasi dan Menggunakan build-simple-cdd

Simple-CDD memerlukan banyak parameter untuk beroperasi secara penuh. Mereka akan paling sering dikumpulkan dalam berkas konfigurasi, yang dapat diarahkan ke build-simple-cdd dengan opsi --conf, tetapi mereka dapat juga ditentukan melalui parameter khusus yang diberikan kepada build-simple-cdd . Berikut ini adalah gambaran bagaimana perintah ini berperilaku, dan bagaimana parameternya digunakan:
  • parameter profil memuat daftar profil yang akan disertakan pada CD-ROM image yang dihasilkan;
  • berdasarkan daftar paket yang diperlukan, Simple-CDD mengunduh berkas-berkas yang sesuai dari server yang disebutkan di server, dan mengumpulkan mereka menjadi cermin parsial (yang akan kemudian diberikan kepada debian-cd);
  • paket ubahan yang dicantumkan dalam local_packages juga diintegrasikan ke dalam cermin lokal ini;
  • debian-cd kemudian dijalankan (dalam lokasi baku yang dapat dikonfigurasi dengan variabel debian_cd_dir), dengan daftar paket untuk diintegrasikan;
  • setelah debian-cd menyiapkan direktorinya, Simple-CDD menerapkan beberapa perubahan ke direktori ini:
    • berkas yang berisi profil ditambahkan dalam subdirektori simple-cdd (yang akan berakhir pada CD-ROM);
    • berkas lain yang tercantum dalam all_extras parameter juga ditambahkan;
    • parameter boot disesuaikan sehingga memungkinkan preseed. Pertanyaan mengenai bahasa dan negara dapat dihindari jika informasi yang diperlukan disimpan dalam variabel language dan country.
  • debian-cd kemudian menghasilkan image ISO akhir.

12.3.3.3. Menghasilkan suatu Image ISO

Once we have written a configuration file and defined our profiles, the remaining step is to invoke build-simple-cdd --conf simple-cdd.conf. After a few minutes, we get the required image in images/debian-10-amd64-CD-1.iso.