読者です 読者をやめる 読者になる 読者になる

CA MOBILE エンジニアブログ

株式会社シーエー・モバイルのエンジニアブログです

【旧ブログ】cobblerでOSインストールを自動化してみないか

インフラシステムグループ deraxです。
OSインストールは手間がかからないようで台数が増えると一気に手間がかかりますよね?
100台のサーバ準備して!とか言われるとまずはいつ作業が完了するのかまずはスケジュール立てから始まると思います。また手順書を作ってチェックシートを作って・・・
確認作業も必要になってきます。
それでは時間的に非効率なので自動でOSインストールをしてしまいましょう。

利用するツールは「Cobbler」です

cobblerで出来ることは・・・
●インストール方法の選択
ブートローダのオプション選択
パーティション設定
●ネットワーク設定
●FW設定
●インストールパッケージの選択
●インストール前後のスクリプト設定

まとめると・・・
自動でOSインストールを行い更にパッケージのアップデートも出来ます的な感じです。
では設定を行なって行きましょう。

■インストール作業

SElinuxの停止とiptablesの停止 selinuxをdisableにしないとcobblerは起動出来ませんので無効にします。

# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive
# vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
# /etc/init.d/iptables stop
# chkconfig iptables off
# reboot

リポジトリの設定

epelのリポジトリにcobblerがあるのでリポジトリを追加します。

# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum repolist |grep epel

cobblerのインストール

*cobblerが依存しているパッケージも一緒にインストール出来ます。

# yum install cobbler dhcp xinetd

cobblerとdhcpの設定

# cp -p /etc/cobbler/settings /etc/cobbler/settings_org
# vi /etc/cobbler/settings
serverフィールド設定
(削除)server: 127.0.0.1
(追記)server: [cobblerサーバのIPアドレス]
next_serverフィールド設定
(削除)manage_dhcp: 0
(追記)manage_dhcp: 1
(削除)next_server: 127.0.0.1
(追記)next_server: [cobblerサーバのIPアドレス]
# cp -p /etc/cobbler/dhcp.template /etc/cobbler/dhcp.template_org
# vi /etc/cobbler/dhcp.template
subnet [dhcpを動作させるネットワークアドレス] netmask 255.255.255.0 {
option routers             [cobblerサーバのIPアドレス];
option domain-name-servers [cobblerサーバのIPアドレス];
option subnet-mask         255.255.255.0;
range dynamic-bootp        [dhcpの開始IPアドレス] [dhcpの終了IPアドレス];
filename                   "/pxelinux.0";
default-lease-time         21600;
max-lease-time             43200;
next-server                $next_server;
}

tftpの有効化

# vi /etc/xinetd.d/tftp
(削除)disable = yes
(追記)disable = no

rsyncの有効化

# vi /etc/xinetd.d/rsync
(削除)disable = yes
(追記)disable = no

xinetd再起動

# /etc/init.d/xinetd start

各サービスの起動

*cobblerは設定確認コマンドがありますので事前に起動します。

# /etc/init.d/cobblerd start
# /etc/init.d/httpd start

/var/lib/cobbler/loadersのブートローダ設定

# cobbler get-loaders

pykickstartのインストール

# yum install pykickstart

cobblerのパスワード設定

# openssl passwd -1 -salt [ハッシュしたい文字列] [パスワード文字列]
# vi /etc/cobbler/settings
(削除)default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."
(追記)default_password_crypted: "XXX"

cobblerの再起動

# /etc/init.d/cobbler stop
# /etc/init.d/cobbler start

再度エラーの確認

# cobbler sync
# /etc/init.d/dhcpd stop
# cobbler check
1 : service dhcpd is not running
2 : debmirror package is not installed, it will be required to manage debian deployments and repositories
3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

1:DHCPが起動してないと言われています → 後で起動すればいいのでとりあえず無視します
2:debianのパッケージについてのエラー → CentOSを利用している場合は無視します
5:fencing toolsに関してのエラー → 今は使わないので無視します

■webインターフェイス

パッケージのインストール

# yum install cobbler-web

ダイジェスト認証へ変更

# cp -p  /etc/cobbler/modules.conf /etc/cobbler/modules.conf_org
# vi /etc/cobbler/modules.conf
(修正前)module = authn_denyall
(修正後)module = authn_configfile

webインターフェイスへのログインユーザとパスワードの作成

# htdigest /etc/cobbler/users.digest "Cobbler" cobbleradm

以下の2つのファイルを変更します

# cp -p /usr/share/cobbler/web/settings.py /usr/share/cobbler/web/settings.py_org
# vi /usr/share/cobbler/web/settings.py
TEMPLATE_LOADERS = (
(削除)    'django.template.loaders.filesystem.load_template_source',
(削除)    'django.template.loaders.app_directories.load_template_source',
(追記)    'django.template.loaders.filesystem.Loader',
(追記)    'django.template.loaders.app_directories.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
(削除)    'django.contrib.csrf.middleware.CsrfMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
(追記)    'django.middleware.csrf.CsrfViewMiddleware',
)
ROOT_URLCONF = 'urls';
# cp -p /usr/share/cobbler/web/cobbler_web/views.py /usr/share/cobbler/web/cobbler_web/views.py_org
# vi /usr/share/cobbler/web/cobbler_web/views.py
def login(request, next=None):
(削除)    return render_to_response('login.tmpl', {'next':next})
(追記)    return render_to_response('login.tmpl', context_instance=RequestContext(request, {'next':next}))
def do_login(request):
global remote
# /etc/init.d/httpd restart

ブラウザにてアクセス

https://[cobblerサーバのIPアドレス]/cobbler_web

PXEブートにてインストール出来るネットワークレンジの設定

# vi /etc/hosts.allow
(追加)
bootps:         [ネットワークアドレス]/255.255.255.0
tftp:           [ネットワークアドレス]/255.255.255.0
in.tftpd:       [ネットワークアドレス]/255.255.255.0

ディストリビューションの準備

ここではCentOSの5.9と6.4をimportします。一つのディストリビューションにつき30分程度時間がかかります。

# cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/6.4/os/x86_64/ --name=CentOS6.4-x86_64
# cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/5.9/os/x86_64/ --name=CentOS5.9-x86_64
# cobbler sync

DHCPの起動

# /etc/init.d/dhcpd start

最終確認と動作確認

# cobbler check

OSをインストールしたいクライアントをPXEブートする

kickstartのファイルを利用してOSをインストールする場合、kickstartのテンプレートを利用して自動インストールが可能です。
GUIの起動必須ですがテンプレート作成はGUI上にて設定を気軽に行うことが出来ます。
CentOSでは以下の通りにパッケージをインストールします。

# yum install system-config-kickstart

作成を行ったテンプレートはcobblerのデフォルトテンプレートと同じ保存先の
/var/lib/cobbler/kickstarts
へ保存してください。
同じ保存先にすることでcobblerのwebUIで読み取ることが出来ます。

kickstartの設定ファイルにて注意点があります。
設定の中に2バイト文字があるとkickstartのファイルをダウンロード出来ませんとエラーが発生しインストールが進みません。(これで数時間ハマりました・・・)

zp8497586rq