OSインストールの自動化


目次

自己紹介

Furyu Tech Blogを読んで下さっているみなさん、初めまして。 コンテンツ・メディア第1事業部のインフラチームに所属していると藤本佳世と申します。今回が初投稿となりますが、これからみなさんに「フリューのインフラ技術」をご紹介できればと思っています。 どうぞよろしくお願い致します。

インフラの仕事

インフラの仕事は、サーバの選定から始まり、OS・ミドルウェアのインストールや監視など様々な仕事があります。 開発メンバーがスムーズに仕事をこなせるよう、日々「縁の下の力持ち」として頑張っています。 今回は、インフラ業務の中でも、「OSインストールの自動化」について、お話したいと思います。

PXEブート

みなさん、「PXEブート」はご存知ですか?

PXE(Preboot eXecution Environment)とは、コンピュータのブート環境の一つで、ネットワークブートを利用することにより、OSイメージを使用して起動できます。

今までフリューでは、ISOイメージ(DVD)を用意し、手動でインストールを行っていました。これは、とても時間がかかる作業です。しかし、PXEブートを導入する事により、「OSインストールの自動化」を実現しました。

簡単にPXEブートの流れを説明すると、

  1. 新規サーバを購入
  2. PXEサーバと新規サーバをネットワークケーブルで接続
  3. PXEブート起動
  4. OSが自動でインストールされる

PXEサーバについて

PXEブートを可能にするため、PXEサーバを構築をします。構築には、Cobblerを使用します。 Cobblerとは、Python製のツールで、ネットワークインストールを簡潔に行う仕組みを備えた、PXEブート向けの統合環境です。

※詳しくはhttp://cobbler.github.io/

フリューのPXEサーバ

Vagrant上に、PXEサーバ(CentOS6.6,64bit)を構築しました。

  1. VirtualBox-4.3
  2. 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」設定方法について、お話ししたいと思います。