2010-06-30
preseedを使ってDebian GNU/Linux 5.0.4(netinst)のインストール自動化を行う手順
サーバのインストールって、結構定型化してますよね。面倒ですよね。そう思わない人は読まなくていいです。
概要
以上、4本立てです。
DHCP、PXE(TFTP)、カーネルパラメータ、d-iの知識が入り乱れて要求されるので結構ハードル高いですが、便利になります。
5台以上立て続けにインストールするなら、検討してみてください。
準備
インストール対象のマシンのMACアドレスを記録してください。
PXEブート用DHCPサーバの構築
Ubuntu上でやりました。Debianでもほとんど変わらないと思います。
論よりコード
$ sudo apt-get -y install dhcp3-server
$ cat << EOF | sudo tee /etc/dhcp3/dhcpd.conf
allow booting;
allow bootp;
subnet 192.168.78.0 netmask 255.255.255.0{
range 192.168.78.100 192.168.78.139;
option broadcast-address 192.168.78.255;
next-server 192.168.78.2;
}
group {
filename "/debian-5.0.4-installer/pxelinux.0";
host 08-00-27-b6-fa-6c { hardware ethernet 08:00:27:B6:FA:6C; }
}
EOF
$ sudo /etc/init.d/dhcp3-server restart
debug方法
ログファイルは/var/log/syslogです。
netinstインストーラ配布用TFTPサーバの構築
このTFTPサーバのアドレスは192.168.78.2としています。
即ち、dhcpd.confのnext-server部分、および後述のpxelinux.cfg/01-MACADDRのurl部分ですので、適宜書き換えてください。また、TFTPサーバはDHCPサーバと同居させることも可能です。
また、Ubuntu上でやりました。DebianでもTFTP rootが/srv/tftp → /var/tftp (だったかな?) くらいの変更で、ほとんど変わらないと思います。
論よりコード
$ sudo apt-get -y install atftpd $ sudo mkdir /srv/tftp/debian-5.0.4-installer/ $ wget http://ftp.jp.debian.org/debian/dists/lenny/main/installer-amd64/current/images/netboot/netboot.tar.gz -O - | sudo sh -c "cat - | tar xzf - -C /srv/tftp/debian-5.0.4-installer/"
debug方法
ログファイルは/var/log/syslogです。
TFTPサーバ:pxelinux.cfg/01-MACADDRの作成
PXEで起動し、インストーラカーネルの場所とパラメタを指定するファイルです。
論よりコード
$ cat << EOF | sudo tee /srv/tftp/debian-5.0.4-installer/pxelinux.cfg/01-08-00-27-b6-fa-6c
default autoinstall
label autoinstall
kernel debian-installer/amd64/linux
append load initrd=debian-installer/amd64/initrd.gz locale=ja_JP.UTF8 console-keymaps-at/keymap=jp106 interface=eth0 hostname=deb01 domain=localdomain.local url=tftp://192.168.78.2/preseed.cfg DEBCONF_DEBUG=5
EOF
注意
ファイル名は 01-MACアドレス(小文字、ハイフン区切り)です。先頭の01-を忘れがちなので、気をつけてください。
interface、hostname、domainは適宜書き換えてください。interfaceはインストールおよびインストール後に利用するNICになります。hostnameやdomainも、ここで指定したものがインストール後にも使われます。
tips
pxelinux.cfg/01-MACADDRのurl=にはhttpやftpも使えます。httpdやftpdは用意してください。proxyが超えられるか否かは知りません。
TFTPサーバ:preseed.cfgの作成
概要
なんとなくわかってください。
- HTTP Proxy = 192.168.78.100:8080 とします
- ディスクは一本だけ、全部LVM、パーティションは割りません。スライスはインストーラ任せ
- rootによる直接ログインは不可(パスワード設定していない)、sudo経由
- user01というユーザを作成、パスワードはhogehoge
- パッケージは最小限にした上でopenssh、sudo、screen、msmtpをインストール
- インストール直後の初回起動時に /etc/rc2.d/S99install (ファイルはtftp経由で取得) を実行するようにセット
という感じ。
TFTPサーバ:/srv/tftp/preseed.cfg
d-i mirror/country string manual d-i mirror/http/hostname string ftp.jp.debian.org d-i mirror/http/directory string /debian d-i mirror/http/proxy string http://192.168.78.100:8080 d-i clock-setup/utc boolean true d-i time/zone string Japan d-i clock-setup/ntp boolean true d-i clock-setup/ntp-server string ntp.localdomain.local d-i partman-auto/method string lvm d-i partman-lvm/device_remove_lvm boolean true d-i partman-lvm/device_remove_lvm_span boolean true d-i partman-auto/purge_lvm_from_device boolean true d-i partman-lvm/confirm boolean true d-i partman-auto-lvm/guided_size string max d-i partman-auto/choose_recipe select atomic d-i partman/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i passwd/root-login boolean false d-i passwd/user-fullname string user01 d-i passwd/username string user01 # $ echo "hogehoge" | mkpasswd -s -H MD5 d-i passwd/user-password-crypted password $1$1bA07m/w$1wuZ5DneSI2bG2KWQBc0r0 d-i apt-setup/non-free boolean true d-i apt-setup/contrib boolean true d-i apt-setup/services-select multiselect security, volatile d-i apt-setup/security_host string security.debian.org d-i apt-setup/volatile_host string volatile.debian.org tasksel tasksel/first multiselect none d-i pkgsel/include string openssh-server sudo screen msmtp d-i pkgsel/upgrade select full-upgrade popularity-contest popularity-contest/participate boolean false d-i grub-installer/only_debian boolean true d-i preseed/late_command string tftp -g -r /S99install.sh -l /target/etc/rc2.d/S99install 192.168.78.2 ; chmod +x /target/etc/rc2.d/S99install; sync d-i finish-install/reboot_in_progress note
TFTPサーバ:/srv/tftp/S99install.sh
このスクリプトで、インストール完了後にメールを送るようにします。携帯メールにするなら、fromとかちゃんとやってください。spamとしてはじかれます。
SMTPサーバが必要です。SMTPSRVあたりを書き換えてくださいな。
purge nanoしているのはご愛敬。
#!/bin/bash -e
LANG=C
apt-get remove --purge -y nano
IF=eth0
SMTPSRV=192.168.78.2
FROM=no-reply+`hostname`@localdomain.local
TO=notify@localdomain.local
sleep 10
ping -c 10 ${SMTPSRV}
if [ $? == 0 ]; then
cat << EOM | msmtp --host=${SMTPSRV} --port=8025 --from=${FROM} ${TO}
Subject: [INFO] Hands-off install completed. (`hostname`)
Hands-off install completed.
== setup info ==
FINISH=`date "+%Y/%m/%d %H:%M:%S"`
MACADDR=`ifconfig ${IF} | awk '/HWaddr/ {print $5}'`
HOSTNAME=`hostname`
IPV4ADDR=`ifconfig ${IF} | awk '/inet addr:/ {print $2}' | cut -d ":" -f 2`
DEBIAN_VERSION=`cat /etc/debian_version`
[EoM]
EOM
fi
mv -f /etc/rc2.d/S99install /etc/rc2.d/s99install
tips
preseed/late_commandではwgetも使えます。
tftpはbusyboxのtftpなので、コマンドラインを間違えないように。
debug方法
ログファイルが/var/log/installer/syslogに落ちています。
これは、appendでDEBCONF_DEBUG=5を指定しているためです。
preseed.cfgの作り方
DEBCONF_DEBUG=5を指定した状態でインストーラを起動してください。あとは実際にインストール作業をすると、/var/log/installer/syslogにログが落ちてます。あとは、キーワードになりそうな行を切り貼りするだけです。
(なげやりな説明)
リファレンス
いろいろお世話になりました。
B.2. preseed の利用
http://www.debian.org/releases/stable/arm/apbs02.html.ja
Halis way: Ubuntu dapper PXE network install
http://halisway.blogspot.com/2006/06/ubuntu-dapper-pxe-network-install.html
Ubuntu preseed.cfg installs off PXE Boot - Wiki
https://www.digisoftinc.org/wiki/index.php/Ubuntu_preseed.cfg_installs_off_PXE_Boot
- 382 http://pipes.yahoo.com/pipes/pipe.info?_id=tDfBdGWF3RGl9XNm1L3fcQ
- 48 http://pipes.yahoo.com/pipes/pipe.info?_id=12e453e301454b799b3ac6642aa089b5
- 13 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4SUNC_jaJP365JP365&q=acts_as_paranoid+validates_uniqueness_of
- 11 http://search.yahoo.co.jp/search?p=ソフトバンク PUK認証&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=
- 11 http://www.evernote.com/html/noteview.html
- 11 http://www.google.co.jp/search?hl=ja&safe=off&q=xen+ライブマイグレーション&aq=f&aqi=&aql=&oq=&gs_rfai=
- 10 http://www.google.co.jp/search?hl=ja&safe=off&q=debian+lenny+xen+インストール&aq=f&aqi=&aql=&oq=&gs_rfai=
- 7 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=iscsi++ライブマイグレーション&aq=f&aqi=&aql=&oq=&gs_rfai=
- 6 http://www.google.co.jp/m?ie=Shift_JIS&q=PUK認証
- 6 http://www.google.co.jp/search?q=ライブマイグレーション+xen&btnG=検索&hl=ja&client=opera&rls=ja&sa=2
