PXE+Kickstartで動かすVirtualBox+CentOS環境自動構築サーバーの作り方:新人インフラ技術者のためのサーバー構築/運用自動化入門(2)(1/5 ページ)
サーバー構築の自動化で利用される技術、自動化ツールとして「Kickstart」「Puppet」を紹介し、構築から運用まで、システムライフサイクル全体にわたる運用管理の自動化についても解説する連載。今回は、PXEとKickstartを使い、VirtualBox+CentOS環境を自動でインストールするためのサーバーの作り方について。
3日で100台のサーバーにOSをインストールできますか?
K男さんのキビシイ指導で、新人R子さんはサーバー構築作業にだいぶ慣れてきました。
K男 無事1日10台のノルマをこなせるようになってきたようだね。
R子 はい! 先輩のおかげで、だいぶ慣れてきました!
K男 ところで、新しいクライアントから仕事が入ったんだけど、3日で100台のサーバーにOSをインストールしてほしいらしいんだよね。
R子 えっ!? どんなに頑張っても1日10台が限界ですよ! 今の3倍、1日33台のサーバーなんて、シャア専用サーバーでも無理です!(悲)
K男 でもさぁ、もう、できるって言っちゃったんだよね〜。ま、頑張って!
さて、いきなり今まで構築したサーバーの3倍以上の数をセットアップすることになったR子さん。一体どうすればいいのでしょうか。今回はそんなときに便利なOSインストールの自動化について紹介します。
VirtualBoxで動くCentOS環境を自動構築するためのサーバーを作ろう
前回の「環境構築自動化の手順と評価検証、Puppetの基礎知識」では、ネットワークブートによるCentOSインストールの概要をお話ししました。今回はOSインストールまで(前回のネットワークブートによるインストール説明図における【1】IPアドレス払い出し【2】ブートローダーの読み込み【3】OSインストール)を担当するサーバーを作ります。
説明に入る前に、CentOS環境を自動構築するサーバーを構築するための(ややこしいですね)CentOS環境を手動インストールで準備してください。本連載では、CentOS 6.5を使います。必要なパッケージは以降の説明で必要に応じてインストールしていきますので、好みのパッケージの組み合わせがある場合は、その構成で構いません。
自動構築サーバーは、システム構築に必要なインストール資材をたくさん置きますので、OSインストール後のディスクの空き容量が多めに必要です。最低20GB程度あった方がいいでしょう。こだわりがなければ、「Minimal」(最小構成)インストールをお勧めします。
注
Oracle VM VirtualBoxのGuest Addtionを導入する場合、Minimal(最小構成)インストールだとパッケージが足りません。その場合は、kernel-devel、kernel-headers、gcc、perlなどのパッケージを追加する必要があります。
自動構築サーバーに使うPCですが、「一度に大量のサーバーを同時に構築する」ということでなければ、メモリが1GB程度確保できれば大抵のものは大丈夫です。また、物理マシンでも仮想マシンでも問題ありません。本連載でもオープンソースの仮想化ソフトウェアである、「Oracle VM VirtualBox」(以下、VirtualBox)を使って説明します。
セキュリティ設定の変更
さて、CentOS環境が準備できたら最初にすべきことはセキュリティ設定の変更です。自動構築で使うプロトコルは、適切なセキュリティ設定をしないと受信拒否される場合があります。簡便化のため、本連載ではセキュリティ設定を無効化します。
まずiptablesサービスを無効にします。以下のコマンドを実行してください。
# chkconfig iptables off
次にSELinuxを無効化します。この設定はDVDから手動でインストールした場合は必ず有効になっています。設定ファイル(/etc/sysconfig/selinux)を以下のように修正してください。
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. #SELINUXTYPE=targeted
6行目はenforcingからdisabledに変更しています。
追加パッケージのインストール
検証用の環境からインターネットに接続できる場合は、以下のコマンドで必要なパッケージをインストールしてください。
# yum install dhcp httpd tftp-server syslinux createrepo -y
VirtualBoxのホストオンリーアダプターを使う場合など、インターネットに接続できない環境では、設定ファイル(/etc/yum.repos.d/CentOS-Media.repo)を以下のように変更(6行目を追加)します。
[c6-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ file:///media/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
CentOSのインストール用DVDを/mediaにマウントした状態で以下のコマンドを実行してください。
# yum --disablerepo=\* --enablerepo=c6-media install dhcp httpd tftp-server syslinux createrepo -y
追加パッケージがインストールできたら、サービス起動設定を有効にします。
# chkconfig dhcpd on # chkconfig httpd on # chkconfig tftp on # chkconfig xinetd on
ここまでできましたら、設定を反映させるために一度再起動しましょう。
CentOSのインストール用DVDをYumリポジトリにする
CentOSをネットワーク経由でインストールする際、いくつかのプロトコルが使えますが、本連載では設定の容易さからHTTPを使います。
先ほどhttpdパッケージをインストールしていますので、Web公開用のディレクトリ(/var/www/html/)にCentOSのインストール用DVDをコピーして、インストール用のYumリポジトリにします。
通常Yumリポジトリを作成するには「createrepo」というコマンドを実行する必要がありますが、インストール用DVDを丸ごとコピーした場合は、すでに依存関係データベースがあるので実行する必要はありません。createrepoコマンドについては次回説明します。
CentOSのインストール用DVDを/mediaにマウントした上で、以下のようなコマンドを実行してください。
# cp -r /media/ /var/www/html/ # mv /var/www/html/media /var/www/html/centos65
Webサーバーの公開ディレクトリに、OSのインストールメディアであることが分かる名前でディレクトリを作成し、OSメディアの中身をコピーします。ここでは、ディレクトリ名は、OS名+バージョンにしています。
Yumリポジトリの構成は下図にようになります。
Copyright © ITmedia, Inc. All Rights Reserved.