OS/アプリケーションを、一度に、たくさんのサーバーに、入れることがちょいちょいあります。そのときに必要なインストール用のサーバーのメモ。
このインストール用のサーバーがあると、
空のサーバー機(VMでも)に、簡単に(CDメディアとか無しで)、CentOS6をインストールすることが出来るようになります。
1つのサーバーに、
1-1. CentOS6のローカルリポジトリ(http)と、
1-2. PXEブート用のサーバー(dhcpd, tftpd)を、
設定します。(1-1だけ、1-2だけでも、別途利用方法があります)
ここでは、サーバーのIPアドレスは10.0.0.1とします。
1. CentOS6のローカルリポジトリ
1-0. できあがり目標
こんな感じでアクセスできるCentOSのリポジトリができます。
http://10.0.0.1/centos/6/os/x86_64
(本記事は、64bitの場合。32bitなら以下、x86_64をi386に読み替えればいいはず。)
/var/www/html/centos
+-- 6
+-- os
| +-- x86_64 (←ここはDVDまるコピー)
| +-- CentOS
| +-- NOTES
| :
+-- updates
+-- x86_64
使い方
・PXEブートを仕込むと、メディアDVD無しでインストールできます。
・PXEブート+Kickstartファイルを仕込むと、メディアも対話も無しでインストールできます。
・PXEブートを仕込まなくても、netbootのCDメディアからインストールできます。
1-1. 準備
・SELinuxをOFFにしてしまう。
echo 0 > /selinux/enforce
/etc/selinux/configを変更:SELINUX=disabled
1-2. 静的なリポジトリ部分をDVDからのコピー
(ここでCentOS6.0のisoを、/centos/6/osディレクトリへ)
mkdir -p /var/www/html/centos/6/os
1-3. コピー元のDVD(iso)を準備
ここでは以下2ファイルを/var/tmpに配置
CentOS-6.0-x86_64-bin-DVD1.iso
CentOS-6.0-x86_64-bin-DVD2.iso
確認
sha256sum /var/tmp/CentOS-6.0-x86_64-bin-DVD1.iso
期待されるハッシュ値: 3399d1f7bdfb0690a7d5f09e5fe1ec30380646d732ab15e1e5bd9653698ead2c
sha256sum /var/tmp/CentOS-6.0-x86_64-bin-DVD2.iso
期待されるハッシュ値: 46631ac6719fa042c25fa607ac776a654a840606703015b554393ca19371cba9
1-4. CentOS 6.0をコピー
コピー先を作成
mkdir /var/www/html/centos/6/os/x86_64/
DVD1枚目をコピー
mount -o loop /var/tmp/CentOS-6.0-x86_64-bin-DVD1.iso /mnt
cp -vr /mnt/* /var/www/html/centos/6/os/x86_64/
umount /mnt
DVD2枚目をコピー
mount -o loop /var/tmp/CentOS-6.0-x86_64-bin-DVD2.iso /mnt
cp -vruf /mnt/* /var/www/html/centos/6/os/x86_64/
umount /mnt
1-5. updateリポジトリの同期と定期更新設定
updateリポジトリは定期更新することにします。
コピー先ディレクトリを作成
mkdir -p /var/www/html/centos/6/updates/x86_64
mkdir -p /var/www/html/centos/6/extras/x86_64
mkdir -p /var/www/html/centos/6/centosplus/x86_64
mkdir -p /var/www/html/centos/6/contrib/x86_64
コマンドを準備
yum -y install yum-utils createrepo
コピー用スクリプトを作成
cat << EOF > /etc/cron.daily/syncrepo
#!/bin/sh
reposync -r updates -n -p /var/www/html/centos/6/updates/x86_64
cd /var/www/html/centos/6/updates/x86_64
createrepo -d .
reposync -r extras -n -p /var/www/html/centos/6/extras/x86_64
cd /var/www/html/centos/6/extras/x86_64
createrepo -d .
reposync -r centosplus -n -p /var/www/html/centos/6/centosplus/x86_64
cd /var/www/html/centos/6/centosplus/x86_64
createrepo -d .
reposync -r contrib -n -p /var/www/html/centos/6/contrib/x86_64
cd /var/www/html/centos/6/contrib/x86_64
createrepo -d .
EOF
chmod +x /etc/cron.daily/syncrepo
とりあえず手動で一回同期
/etc/cron.daily/syncrepo
1-6. http server
yum -y install httpd
cat << EOF > /etc/httpd/conf.d/centos-repository-mirror.conf
<Directory /centos >
Options +Indexes
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from 10.0.0.0/255.255.255.0
</Directory>
EOF
chkconfig httpd on
service httpd start
動作確認
適当なブラウザから、
http://10.0.0.1/centos/6/os/x86_64/RELEASE-NOTES-en-US.html
を閲覧してみる。
2. PXEブートサーバー
2-0. サーバーをPXEブートさせるためのサーバーの設定。
PXEブートは、HDDにOS入っていなくても、CD/DVD/USBのOSを持っていなくてもブートできます。
今時、大抵のサーバーはPXEブートできるはず。
dhcpサーバーとtftpサーバーからなる。
2-1. firewall
面倒だからとりあえず止める
2-2. tftp server
2-2-1. install
yum -y install tftp-server
chkconfig tftp on
chkconfig --list | grep tftp
tftp: on
2-2-2. pxeブート用ファイル
/var/lib/tftpbootディレクトリ
CentOS6.0 x86_64用
(CentOS5は/tftpbootだった)
(設定は、/etc/xinetd.d/tftpのserver_args = -s の後ろのディレクトリ)
mkdir -p /var/lib/tftpboot/cent60x64/pxelinux.cfg
pxelinux.0, vmlinuz, initrd.imgの3ファイルが必要
・pxelinux.0
(rpmから)
cd /var/tmp/
wget http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.0/os/x86_64/Packages/syslinux-3.86-1.1.el6.x86_64.rpm
rpm2cpio syslinux-3.86-1.1.el6.x86_64.rpm | cpio -ivr "*/pxelinux.0"
rename ./usr/share/syslinux/pxelinux.0 ->
とでたら、/var/lib/tftpboot/cent60x64/pxelinux.0
(他には)
http://www.kernel.org/pub/linux/utils/boot/syslinux/
・vmlinuz, initrd.img
OSのDVDから取り出す
mount -o loop /var/tmp/CentOS-6.0-x86_64-bin-DVD1.iso /mnt
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/cent60x64/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/cent60x64/
umount /mnt
デフォルトのブート設定ファイル(別途、MACアドレス毎、MACアドレスの上位桁毎に、設定できます)
cat << EOF > /var/lib/tftpboot/cent60x64/pxelinux.cfg/default
default cent6
label cent6
kernel vmlinuz
append load initrd=initrd.img ksdevice=eth0 devfs=nomount
EOF
例)
MACアドレス01-00-0c-29-17-b3-d4のサーバーが読み込む設定ファイル
/tftpboot/cent60x64/pxelinux.cfg/01-00-0c-29-17-b3-d4
MACアドレス01-00-0c-29-??-??-??のサーバーが読み込む設定ファイル
/tftpboot/cent60x64/pxelinux.cfg/01-00-0c-29
2-2-3. tftpスタート(xinetd経由)
service xinetd start
2-3. dhcp server
2-3-1. インストール
yum -y install dhcp
chkconfig dhcpd on
chkconfig --list | grep dhcpd
dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2-3-2. 設定ファイル
cat << EOF > /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 10.0.10.0 netmask 255.255.255.0 {
option routers 10.0.0.254;
option subnet-mask 255.255.255.0;
option domain-name "example.com";
option domain-name-servers 10.0.0.1;
range dynamic-bootp 10.0.0.100 10.0.0.200;
default-lease-time 21600;
max-lease-time 43200;
filename "/cent60x64/pxelinux.0";
next-server 10.0.0.1;
}
EOF
※ CentOS5は/etc/dhcpd.confだったと思う。
※ next-serverがリポジトリサーバー
2-3-3. スタート
service dhcpd start
3. Kickstart
Kickstartファイル(あらかじめOSインストール設定を書いたファイル)を準備すると、
対話無しでインストールできます。
OSの基本設定はもちろん、自由なscriptも、書けるので、
アプリケーションとその設定も、自動で入れてしまえます。
例えば、
基本的な設定
・ネットワークの設定、セキュリティの設定
・sshのログイン用のkey設定
・yumで使うリポジトリを、ローカルリポジトリサーバーを使うようにする設定
などなど。
アプリケーションなら、
・たくさんの、Hadoopのノードの設定
・たくさんの、Webサーバー/アプリケーションサーバーの設定
などなど
4. クライアント、というか、このインストールサーバーを使ったOSインストール
4-1. とりあえず、PXEブートだけ、リポジトリだけ、使うのもあり。
PXEブートする。
Installation Methodで、
いまいちど
http://10.0.0.1/centos/6/os/x86_64
とする。
4-2. PXEブート、リポジトリ、Kickstart設定を、あわせて楽にインストール
Kickstart例を、おいおいメモしておこう...
--
0 件のコメント:
コメントを投稿