仮想化が大流行りな今日この頃、ホストのセットアップもテンプレートからで済むケースが身の回りでも増えていますが、そうはいっても、いや仮想化が流行っているからこそ、KVM用に何台もの物理サーバーにLinuxのインストール繰り返す、そんな刺身タンポポな作業も出てきます。最近はよくUbuntu Server 12.04 LTSを触っているので、いい加減これはインストール作業を自動化する方法を覚えねば、とPreseedingによるUbuntu Serverの自動インストールに取り組んでみました。PreseedingはUbuntu Serverのインストーラのダイアログへの応答を事前に定義しておくことで、完全自動インストールを実現する仕組みです。

今回作成した設定ファイルの中身は以下の通り。なお、設定は、Ubuntu Serverのインストーラに対してtftpで食わせたりもできるのですが、今回は完全にCDのISOイメージの中に入れ込む形で作りました。詳しくは日本HPによるUbuntu Serverの自動インストールCD作成手順Appendix B. Automating the installation using preseeding – Ubuntu Official Documentationを参照されるとよいのではないかと思います。

isolinux.cfg
default install
label install
  menu label ^Install Ubuntu Server
  kernel /install/vmlinuz
  append auto=true locale=en_US.UTF-8 console-setup/charmap=UTF-8 console-setup/layoutcode=us console-setup/ask_detect=false pkgsel/language-pack-patterns=pkgsel/install-language-support=false vga=normal file=/cdrom/isolinux/preseeding.cfg initrd=/install/initrd.gz quiet --
label hd
  menu label ^Boot from first hard disk
  localboot 0x80
timeout 3
preseeding.cfg.erb
d-i debian-installer/language string en
d-i debian-installer/country string US
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/supported-locales en_US.UTF-8d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us
d-i console-setup/charmap select UTF-8
d-i keyboard-configuration/layoutcode string us
d-i netcfg/choose_interface select autod-i netcfg/disable_autoconfig boolean trued-i netcfg/dhcp_failed note
d-i netcfg/dhcp_options select Configure network manuallyd-i netcfg/get_ipaddress string <%= conf['ip_addr'] %>
d-i netcfg/get_netmask string <%= conf['netmask'] %>
d-i netcfg/get_gateway string <%= conf['gateway'] %>
d-i netcfg/get_nameservers string <%= conf['nameserver'] %>
d-i netcfg/confirm_static boolean trued-i netcfg/get_hostname string <%= conf['hostname'] %>
d-i netcfg/get_domain string <%= conf['domainname'] %>
d-i mirror/country string manual
d-i mirror/http/hostname string ftp.jaist.ac.jp
d-i mirror/http/directory string /pub/Linux/ubuntu
d-i mirror/http/proxy stringd-i clock-setup/utc boolean trued-i time/zone string Asia/Tokyod-i clock-setup/ntp boolean trued-i partman-auto/init_automatically_partition select biggest_freed-i partman-auto/method string lvmd-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean trued-i partman-auto-lvm/guided_size string maxd-i partman-auto/choose_recipe select atomicd-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i passwd/user-fullname string <%= conf['username'] %>
d-i passwd/username string <%= conf['username'] %>
d-i passwd/user-password-crypted password <%=conf['password'] %>
d-i user-setup/encrypt-home boolean false
tasksel tasksel/first multiselect noned-i pkgsel/include string openssh-server build-essential
d-i pkgsel/update-policy select unattended-upgrades
d-i pkgsel/install-language-support boolean trued-i grub-installer/only_debian boolean trued-i grub-installer/with_other_os boolean trued-i finish-install/reboot_in_progress notexserver-xorg xserver-xorg/autodetect_monitor boolean true
xserver-xorg xserver-xorg/config/monitor/selection-method \
       select medium
xserver-xorg xserver-xorg/config/monitor/mode-list \
       select 1024x768 @ 60 Hz

そして、これだけ用意しても、後でまた設定を変更して再度ISOイメージを作りなおすとなると面倒なので、Rubyの勉強も兼ねて、ISOイメージを作成するRakeタスクも作成しました。これらをまとめてGithubに置いてあります。

https://github.com/ynojima/aigus

呼び出し方は以下の通り。引数は、config/rake.ymlにデフォルト値を記述してあります。

sudo bundle exec rake install_iso:make ip_addr="192.168.0.2" version="12.04" hostname="test" domainname="sharplab.org"

Trackbacks : 4

Trackback URL for this entry
http://blog.sharplab.net/blog/2012/11/11/ubuntu-server%e3%81%ae%e5%ae%8c%e5%85%a8%e8%87%aa%e5%8b%95%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%abiso%e3%81%ae%e4%bd%9c%e6%88%90%ef%bc%88preseeding%ef%bc%89/trackback/

Listed below are links to weblogs that reference this entry

トラックバック from עבודה בפרת' אוסטרליה 13-09-16 20:05:25 UTC

עבודה בפרת’ אוסטרליה…

… עבודה באוסטרליה חווה – עבודה בחו ל אנחנו עובדים בקנדה ארה ב אוסטרליה, אירופה והקריביים. כנס ישירות לבנק בחר בין 2 עבודה במכרות אוסטרליה, כולל בין היתר המקומית. לכל עבודה יש זכות מלאה לעבוד +זכויות נוס… Ubuntu Serverの完全自動インストールISOの作成(Preseeding …..

ピンバック from PreseedによるUbuntuの自動インストール入門 | ユニキャストラボ 13-09-16 20:09:44 UTC

[…] Ubuntu Serverの完全自動インストールISOの作成(Preseeding) – SharpLab. […]

トラックバック from view website 14-10-12 05:37:31 UTC

view website…

Ubuntu Serverの完全自動インストールISOの作成(Preseeding) – SharpLab….

トラックバック from 女性育毛剤 60代 17-01-13 19:25:12 UTC

女性育毛剤 60代

Ubuntu Serverの完全自動インストールISOの作成(Preseeding) – SharpLab.