2012年9月25日火曜日

サーバの環境構築自動化を考える vol.1: KickStart ~ DHCP 構築

こんにちは、OSSテクノロジーセンターの原です。

弊社ではイベントセミナーで、ハンズオンなどを精力的に行ない、製品や技術の展開を行なっています。

ハンズオンを行なう場合、同じ内容を数回~数十回と行なう場合もあり、そのたびにリフレッシュされたサーバ環境が必要になります。 そのようなこともあり、サーバ環境構築の自動化が非常に重要だったりもします。

今回からは、これまで紹介した oVitrRed Hat Enterprise Virtualization(RHEV) の "物理サーバ" 側の自動構築を行なう方法をご紹介したいと思います。

oVitrRHEV のデプロイ用といっても、利用している技術はどれも非常にポピュラーなもので、いわゆる PXE Boot を利用した KickStart を用いています。

KickStart は他の用途にもいくらでも使い道がありますし、周辺技術として Linux のサービス構築技術を得ることができますので、Linux 初心者の方も一度環境を構築してみると、いろいろと気づきや応用力が養えるので、お勧めです。

また、KickStart だけでは足りないところを補足する技術として、PuppetChef があります。

より高度な自動化を模索したい方は、そちらについても調べてみてはいかがでしょうか。

前置きが長くなりましたが、まずは、今回ご紹介する環境をご紹介します。

なお、今回の環境は RHEL6.3 x86_64 を前提としています。

KickStart 用のサーバを構築するには、少なくとも、DHCP、TFTP が必要になってきます。もちろん DHCP も TFTP も、Linux で構築しなくともよいのですが、今回は他のネットワークなどは一切絡まない箱庭環境を想定して、オールインワンでサーバを構築します。

また、KickStart の大まかな流れとしては以下のような図になります。

まず第1回目である今回は、DHCP の構築を行いましょう。

なお DHCP を構築する場合、当然のことながら、構築するネットワーク環境には十二分に注意しましょう。

練習のつもりで仮想マシン上に立てたところ、社内のネットワークに構築した DHCP を出してしまった・・・などトラブルが発生する場合があります。

練習の場合でも、必ずネットワーク的に隔離された環境を用意してからの方がベターでしょう。


DHCP サーバの導入
# yum install -y dhcp

DHCP の設定: DHCP を流すインターフェースを指定
/etc/sysconfig/dhcpd に以下を追加
DHCPDARGS=eth1
DHCPの設定
/etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;

server-identifier hands.labs.example.com;

option domain-name "labs.example.com";
option domain-name-servers hands.labs.example.com;

subnet 192.168.100.0 netmask 255.255.255.0 {
        option routers                  192.168.100.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.100.1;
        option time-offset              -18000;
        filename "/pxeboot/pxelinux.0";
        next-server 192.168.100.1;
        range dynamic-bootp 192.168.100.128 192.168.100.249;
        default-lease-time 21600;
        max-lease-time 43200;

        host rhev01 {
                hardware ethernet XX:XX:XX:XX:XX:XX;
                fixed-address 192.168.100.101;
        }

        host rhev02 {
                hardware ethernet YY:YY:YY:YY:YY:YY;
                fixed-address 192.168.100.102;
        }

        host rhev03 {
                hardware ethernet ZZ:ZZ:ZZ:ZZ:ZZ:ZZ;
                fixed-address 192.168.100.103;
        }
        # 必要に応じて更に追加
}

一般的な DHCP と基本的には同じですが、以下の2行が今回の PXE Boot 環境のポイントです。

        filename "/pxeboot/pxelinux.0";
        next-server 192.168.100.1;

next-server は、DHCP クライアントが IP を受け取った後、見に行く TFTP サーバのアドレスを書きます。 今回はオールインワン構成なので、DHCP サーバと同じ IP になります。

filename は TFTP を見に行った後、参照するブートローダ pxelinux.0 のファイルパスです。

なお、ここで利用される TFTP サーバの構築は次回以降でご紹介したいと思います。

        host rhev01 {
                hardware ethernet XX:XX:XX:XX:XX:XX;
                fixed-address 192.168.100.101;
        }

このボックスは、PXE Boot する各サーバマシンに振る IP と、マシンの NIC の MAC Address を記述します。

特に記載のないマシンは range dynamic-bootp の範囲で IP が振られますが、 今回の環境は研修用途ですので固定で振る形としました。


設定が完了したら、サービスを起動させましょう。

くれぐれも、まわりのネットワークに干渉しない場所・構成で確認することをお勧めいたします。

# /etc/init.d/dhcpd start
# chkconfig dhcpd on

いかがでしょうか。まずは KickStart 環境構築の手順として、DHCP の構築でした。

今回はここまでです。次回もお楽しみに。

0 件のコメント:

コメントを投稿