自己紹介
Furyu Tech Blogを読んで下さっているみなさん、初めまして。 コンテンツ・メディア第1事業部のインフラチームに所属していると藤本佳世と申します。今回が初投稿となりますが、これからみなさんに「フリューのインフラ技術」をご紹介できればと思っています。 どうぞよろしくお願い致します。
インフラの仕事
インフラの仕事は、サーバの選定から始まり、OS・ミドルウェアのインストールや監視など様々な仕事があります。 開発メンバーがスムーズに仕事をこなせるよう、日々「縁の下の力持ち」として頑張っています。 今回は、インフラ業務の中でも、「OSインストールの自動化」について、お話したいと思います。
PXEブート
みなさん、「PXEブート」はご存知ですか?
PXE(Preboot eXecution Environment)とは、コンピュータのブート環境の一つで、ネットワークブートを利用することにより、OSイメージを使用して起動できます。
今までフリューでは、ISOイメージ(DVD)を用意し、手動でインストールを行っていました。これは、とても時間がかかる作業です。しかし、PXEブートを導入する事により、「OSインストールの自動化」を実現しました。
簡単にPXEブートの流れを説明すると、
PXEサーバについて
PXEブートを可能にするため、PXEサーバを構築をします。構築には、Cobblerを使用します。 Cobblerとは、Python製のツールで、ネットワークインストールを簡潔に行う仕組みを備えた、PXEブート向けの統合環境です。
※詳しくはhttp://cobbler.github.io/
フリューのPXEサーバ
Vagrant上に、PXEサーバ(CentOS6.6,64bit)を構築しました。
- VirtualBox-4.3
- vagrant_1.7.2
※基本的なVagrantの使い方について、FuryuTechBlogで紹介しているので、こちらも是非読んでください。
http://tech.furyu.jp/blog/?p=2317
今回は少し応用で、vagrantを動かしている物理サーバの未使用インターフェース(eth3)とvagrantのインターフェースをbridgeで繋げています。
※Vagrantfileの記述
config.vm.network :public_network, ip: "10.0.2.15", netmask: "255.255.255.0", bridge: "eth3"
イメージとしては、新規購入したサーバと物理サーバ(eth3)をネットワークケーブルで接続し、vagrant上のPXEブートを起動させています。
構築方法
事前準備1
vim /etc/selinux/config
SELINUX=disabled
事前準備2
/etc/init.d/iptables stop
chkconfig iptables off
事前準備3
yum groupinstall "Development Tools"
yum groupinstall "Base"
※開発に最低限必要なパッケージをまとめてインストールできます。
1.Cobblerインストール
※ここでは、後程使うパッケージも一緒にインストールしておきます。
yum install cobbler pykickstart dhcp cman -y
Cobblerのバージョン確認
cobbler --version
Cobbler 2.6.3
※少し前に構築したので、現在の最新バージョンは2.6.11です。(2016年3月時点)
2.rsyncを有効にします
vim /etc/xinetd.d/rsync
disable = no
3.tftpを有効にします
vim /etc/xinetd.d/tftp
disable = no
4.dhcp設定
※ここで記述している10.0.2.XXのアドレスは、物理サーバの未使用インターフェースに割り当てられる、PXE用dhcpアドレスを指定しています。
vim /etc/cobbler/dhcp.template
subnet 10.0.2.0 netmask 255.255.255.0 {
option routers 10.0.2.3;
option domain-name-servers 10.0.2.3;
option subnet-mask 255.255.255.0;
range dynamic-bootp 10.0.2.101 10.0.2.254;
range dynamic-bootp 10.0.2.101 10.0.2.254;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
5.Cobblerパスワードを設定します
openssl passwd -1 -salt "cobbler" "パスワードを指定"
$1$cobblerxxxxxxxxxxxxxxxxxxxx
6.Cobbler設定
vim /etc/cobbler/settings
server: IPアドレス
manage_dhcp: 1
next_server: ゲートウェイアドレス
default_password_crypted: "$1$cobblerxxxxxxxxxxxxxxxxxxxx" ←手順5で取得したもの
pxe_just_once: 1
7.Cobblerとxinetdを起動します
/etc/init.d/cobblerd start
/etc/init.d/xinetd start
cobbler get-loaders
cobbler check
下記のようなメッセージが表示されることがあります。その場合は、メッセージ内容に従って、修正をして下さい。
※1のSELinuxに関して、事前準備でSELINUX=disabledにしているので、ここは無視します。
1 : you need to set some SELinux content rules to ensure cobbler serves
content correctly in your SELinux environment, run the following:
/usr/sbin/semanage fcontext -a -t public_content_t "/tftpboot/.*"
&& /usr/sbin/semanage fcontext -a -t public_content_t
"/var/www/cobbler"/images/.*
2 : reposync is not installed, need for cobbler reposync, install/upgrade yum-utils?
3 : yumdownloader is not installed, needed for cobbler repo add with --rpm-list parameter,
install/upgrade yum-utils?
8.ISOイメージのインポート(少し時間がかかります)
※ISOイメージ取得先https://www.centos.org/download/
cobbler import --name={任意のOS名を指定} --path={OSイメージ場所を指定}
cobblerの設定を追加したり変更したりした後は、必ずsyncする必要があります。
インポートした後も、設定をシンクします。 エラーがでなければ、TASK COMPLETEと最後に表示されます。
cobbler sync
:
:
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
設定を確認する場合は、下記コマンドを実行。
cobbler report
これでOSイメージは用意はできました。 次に、下記のようなOS詳細設定はどのようにするのでしょうか?
- 言語設定
- 時間
- rootパスワード
- パーティション設定
それは、「Kickstart」を使います。
To Be Continued
次回は、「Kickstart」設定方法について、お話ししたいと思います。