ZFS + Jail di FreeBSD 8.0 part 2

Okeee, lanjutan dari post sebelomnya yang udah lama banget ga diupdate hehehe

Sekarang, kita akan langsung masuk mengenai ke bagaimana cara menginstall jail dan kemudian menjalankannya dari dalam FreeBSD

more after the break

Oke, yang pertama harus kita siapkan adalah sebuah jail biasa di dalam sistem kita. Oh ya, cara ini gw ambil dari blognya Hans si admin dewa ITB, jadi jangan lupa kunjungin blog dia๐Ÿ˜€.

Sekarang, dengan menggunakan ZFS, anggap kita sudah membuat pool bernama ‘j’. Setelah itu, buat partisi ZFS di dalamnya dengan nama mroot, sehingga partisi tersebut bernama j/mroot. Kemudian, lakukan langkah-langkah berikut:

  1. Buka sysinstall
  2. Pada sysinstall, pilih custom>options
  3. Pada bagian ini, ubah bagian install root menjadi /j/mroot (pool yang kita buat memiliki direktori sendiri di root)
  4. Pilih base, kernel, ports, man, dan bagian-bagian lain sesuai kebutuhan
  5. Lakukan instalasi. Apabila anda kebetulan seorang anak ITB atau civitas akademika lainnya, disarankan untuk menggunakan media instalasi FTP dengan alamat ftp://ftp.itb.ac.id (atau 167.205.50.9 apabila ada masalah dengan menggunakan hostname langsung)

Oke, sistem jail yang baru sudah selesai dibuat. Berikutnya adalah bagaimana caranya mengkombinasikan jail yang sudah dibuat sebelumnya dengan ZFS dan teknik menggunakan template. Sebelumnya, gw akan menunjukkan sedikit gambaran dari skema yang akan kita gunakan

doh dibikin pake msword gara-gara ga punya visio =_=. Jadi begini, dalam operating system FreeBSD ada dua bagian, yaitu bagian yang selalu fix dan ga akan diubah-ubah lagi, dan satu lagi adalah bagian yang selalu berubah-ubah. Bagian fix ini akan dioperasikan secara read-only dan digunakan oleh semua jail secara bersama-sama dengan cara di mount dari mroot. Sementara, bagian yang berubah-ubah misalnya /etc /var /tmp dan /usr akan dioperasikan secara read-write dan unik untuk tiap jail yang ada, dan diletakkan di s.

Sekarang kita akan langsung membuat skema jail di atas. Oh dan tutorial ini diambil dari FreeBSD Diary dengan beberapa bagian yang disesuaikan dengan skema yang kita gunakanGunakan cpdup (harus diinstall terlebih dahulu) untuk memastikan semua filesystem terkopi dengan baik

# cpdup /usr/src /home/j/mroot/usr/src

Kemudian, buat kerangka yang akan digunakan untuk bagian read-write dari sistem

# cd /j/mroot
# zfs create j/skel
# mkdir /j/skel/home /j/skel/usr-X11R6 /j/skel/distfiles
# mv etc /j/skel
# mv usr/local /j/skel/usr-local
# mv tmp /j/skel
# mv var /j/skel
# mv root /j/skel

Gunakan mergemaster untuk menginstall file-file konfigurasi ekstra, kemudian hapus file sementara yang dihasilkan

# mergemaster -t /j/skel/var/tmp/temproot -D /j/skel -i
# cd /j/skel
# rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev

Sekarang, buat symlink dari bagian sistem read-write ke bagian read-only

# cd /j/mroot
# mkdir s
# ln -s s/etc etc
# ln -s s/home home
# ln -s s/root root
# ln -s ../s/usr-local usr/local
# ln -s ../s/usr-X11R6 usr/X11R6
# ln -s ../../s/distfiles usr/ports/distfiles
# ln -s s/tmp tmp
# ln -s s/var var

Oke, beres. /j/mroot merupakan bagian read-only yang nantinya akan digunakan semua jail, dan /j/skel/ menjadi template dari bagian read-write. Sebagai saran, tambahkan bagian-bagian berikut pada /j/skel/etc/

MASTER_SITE_OVERRIDE=ftp://ftp.itb.ac.id/pub/FreeBSD/ports/distfiles/${DIST_SUBDIR}/

WRKDIRPREFIX=           /var/ports
DISTDIR=                /var/ports/distfiles
PACKAGES=               /var/ports/packages

Baris-baris di atas ditujukan agar semua jail yang kita buat secara default akan mengambil distfile dari ftp ITB dan dapat melakukan build port dalam jail. Sekarang, buat snapshot dengan menggunakan perintah

zfs snapshot j/skel@template

Snapshot ini nantinya akan kita gunakan untuk membuat jail baru. Sekarang, setelah sukses membuat template, kita akan mencoba membuat jailnya. Pada contoh ini, kita membuat 3 jail yang berbeda, yaitu NS, WWW, dan mail. Buat sebuah file baru, yaitu /etc/fstab-jail. Kita tidak akan menggunakan file /etc/fstab karena kita menggunakan filesystem ZFS yang baru dijalankan setelah seluruh isi /etc/fstab di-mount. Isi dari /etc/fstab-jail adalah sebagai berikut:

/j/mroot   /j/ns     nullfs  ro  0   0
/j/mroot   /j/mail   nullfs  ro  0   0
/j/mroot   /j/www    nullfs  ro  0   0
/js/ns     /j/ns/s   nullfs  rw  0   0
/js/mail   /j/mail/s nullfs  rw  0   0
/js/www    /j/www/s  nullfs  rw  0   0

Buat file /etc/rc.local yang berisi:

mount -aF /etc/fstab-jail

Lakukan konfigurasi jail di /etc/rc.conf

jail_enable="YES"
jail_set_hostname_allow="NO"

jail_list="ns mail www"

jail_ns_hostname="ns.example.org"
jail_ns_ip="192.168.3.17"
jail_ns_rootdir="/j/ns"
jail_ns_devfs_enable="YES"

jail_mail_hostname="mail.example.org"
jail_mail_ip="192.168.3.18"
jail_mail_rootdir="/j/mail"
jail_mail_devfs_enable="YES"

jail_www_hostname="www.example.org"
jail_www_ip="62.123.43.14"
jail_www_rootdir="/usr/home/j/www"
jail_www_devfs_enable="YES"

Buat mountpoint yang dibutuhkan untuk setiap jail

#mkdir /j/ns /j/www/ /j/mail

Install template read-write ke semua jail dengan menggunakan zfs clone. Sebelumnya, buat dulu pool bernama js

# zfs clone j/skel@template js/ns
# zfs clone j/skel@template js/www
# zfs clone j/skel@template js/mail

Oke, sip. Whew, sekarang jailnya sudah bisa dijalankan dengan menggunakan perintah berikut:

#mount -aF /etc/fstab-jail

#/etc/rc.d/jail start

Untuk memeriksa apakah jail sudah berjalan atau belum, gunakan perintah jls. Akan keluar layar seperti ini:

   JID  IP Address      Hostname                      Path
     3  192.168.3.17    ns.example.org                /j/ns
     2  192.168.3.18    mail.example.org              /j/mail
     1  62.123.43.14    www.example.org               /j/www

Whew, nais. Apabila kita ingin masuk ke dalam jail www dengan JID 1, gunakan command berikut

#jexec 1 su

Oke, that’s all, semoga membantu!

Catatan: sebaiknya tambahkan alias pada network interface anda, dengan cara mengedit /etc/rc.conf . Karena gw juga udah capek ngetik, silakan googling sendiri hehehe

2 thoughts on “ZFS + Jail di FreeBSD 8.0 part 2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s