[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:52080] ホスト名を安全に変更させるには
- From: 佐藤 大輔 <densuke@xxxxxxx>
- Subject: [debian-users:52080] ホスト名を安全に変更させるには
- Date: Fri, 6 Mar 2009 13:09:20 +0900
- Dkim-signature: v=1; a=rsa-sha256; c=simple/simple; d=fuga.jp; s=fugahoge; t=1236312559; bh=rTx+RuV1iSgbJX6IkRqSJkuTx9oaCDZ1JTeLSJBMMiU=; h=Date:Message-ID:From:To:Subject:MIME-Version:Content-Type; b=M60l jwHMkSq2GZ9El1g6+ilDPbswtGEP5w93JaQBqDYiiCyMfdERTONfN5ost/QYKG/Td3l pYZ4/FhnBh1XTA7Led7Brnt0zaWJ79ZsiGYdaze+KF52Ko8VJDU3MP50BL3qRlG3zHp lwVOstTiczvlKDoRYQ3eZhPwRLxN5cUyQ=
- List-help: <mailto:debian-users-ctl@debian.or.jp?body=help>
- List-id: debian-users.debian.or.jp
- List-owner: <mailto:debian-users-admin@debian.or.jp>
- List-post: <mailto:debian-users@debian.or.jp>
- List-software: fml [fml 4.0.3 release (20011202/4.0.3)]
- List-unsubscribe: <mailto:debian-users-ctl@debian.or.jp?body=unsubscribe>
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-users-ctl@debian.or.jp; help=<mailto:debian-users-ctl@debian.or.jp?body=help>
- X-ml-name: debian-users
- X-mlserver: fml [fml 4.0.3 release (20011202/4.0.3)]; post only (only members can post)
- X-spam-checker-version: SpamAssassin 3.1.7-deb3 (2006-10-05) on osdn.debian.or.jp
- X-spam-level:
- X-spam-status: No, score=0.8 required=10.0 tests=AWL,KI,RCVD_IN_SORBS_DUL autolearn=disabled version=3.1.7-deb3
- Message-id: <87ljrj47io.wl%densuke@xxxxxxx>
- X-mail-count: 52080
- User-agent: Wanderlust/2.15.6 (Almost Unreal)
佐藤と申します。
同型のPC20台にlennyとWindows(XP)をインストールしようとしています。
一度インストールした環境をg4u(ghost4unix)でイメージングし、書き込むこ
とで対応させようとしています。
やりたいこと: テンプレートイメージに含まれていたホスト名を、そのマシン
持つべきホスト名に(自動的に)置換させたい
本当は自動インストールでも使えばいいのでしょうが、Windows込みのためそ
うもいかないという事情があります。なにか妙案があれば教えていただきたい
です。
現状でやってることはというと、
* サンプルマシンを用意し、XPとlennyを入れる
* XPのプロダクトIDはVL版のため同一で使えることから、sysprepにてあらか
じめ記入している
* XPの場合、コンピュータ名はminiinst内で聞いてくるので、
再起動後にそことEULAだけ確認させればOK
* lenny側はそのまま使うとssh(openssh-server)の鍵まで同一になるため、
イメージング前に削除し、起動の際に再生成するように
openss-server.postinstの該当部分を切り出してrc.d内に放りこむようにし
てみてます
* eth0のMACアドレスは当然全員違うので、
/etc/udev/rules.d/70-persistent-net.rulesファイルを空のファイルに置
き換えておく(起動時に動いたudevで調整してくれるから)
* XP側のsysprep前と、サンプル機を落とす直前には、空き領域をゼロで埋め
るようにしておく(こうすることでg4uのイメージを縮小化できる)
# XP側は cipher /W:C:を使って途中でストップ
といったことをしています。
実際これでイメージングして、g4uで別端末に書き戻したマシンは正常に機能
しているように見えたのですが、lenny側のホスト名がテンプレートのままに
なっているということに気付きました。
強引に/etc以下にあるテンプレートホスト名のところをsedでも使ってかきか
えることは可能なんでしょうが、どこまでホスト名が入っているかというとこ
ろで不安が残ります。
ホスト名自体は、DHCPによる固定IPアドレスの逆引きから取得できる設定になっ
ているので、再起動後に
LC_ALL=C
LANG=C
export LC_ALL LANG
newhost=$(host $(/sbin/ifconfig |grep 10.0.0 | \
awk '{print $2}' | cut -d: -f2) | \
awk '{print $5}' | sed -e 's;\.$;;')
shorthost=$(echo $newhost | cut -d. -f1)
domain=$(echo $newhost | cut -d. -f2-)
という具合に、かなりきたない処理ですが一応取得できてます(10.0.0は反則
な気もします)。
debconfの持つ設定ファイル(/var/cache/debconf/config.dat)内でホスト名の
ところをひたすら書き換えてから
# dpkg-reconfigure -a -pcritical
とかすればそれなりに対応するものが書き換えられそうですが、全パッケージ
を調整してしまうため時間がかかってしまいます。
ちなみに作業は自動化できるように、/etc/sysprepディレクトリを作り、make
一発で一通りできるようにしてみてます。
--- Makefile
all: aptclean resetssh resetnet resethost diskclean
aptclean:
aptitude clean
diskclean:
# 各マウントポイントを検出し、未使用領域に巨大な0x00のみのファ
イルを作成、最後に消しておく
for part in $$(mount | grep ^/ | cut -d' ' -f3); do \
pushd $$part && dd if=/dev/zero of=.largefile bs=4096k; \
rm -f .largefile; popd; \
done
# スワップも同様に処理(処理後にmkswapしておく)
for part in $$(grep '^/.* swap' /etc/fstab |\
cut -d' ' -f1); do \
swapoff $$part && dd if=/dev/zero of=$$part bs=4096k; \
mkswap $$part; \
done
resetssh:
# check-sshkey: sshの各鍵を再生成するスクリプト
rm -vf /etc/ssh/*key*
cp -vf check-sshkey /etc/init.d
/usr/sbin/update-rc.d check-sshkey start 15 2 3 4 5 .
resetnet:
# udev/rules.d/70-persistent-net.rulesを空にして
# おいたファイルをコピーする(eth0→eth1になるのを予防)
cp -vf 70-persistent-net.rules /etc/udev/rules.d
resethostname:
# ToDo: ホスト名を各部変更したい
# 再起動後に実施させるべきスクリプトを
# 置いて、起動時にrc.d以下で実行させるよう
# スケジューリングすること(see resetssh)
以上、妙案をお持ちの方よろしかったらご教示ください。
よろしくお願いいたします。
--
佐藤 大輔/densuke@xxxxxxx
follow me! -> http://twitter.com/densuke