maehachi08 Anything Blog

2012年04月11日
CobblerでOSインストール自動化環境構築

OSインストール自動化

キックスタートによるOS自動インストール環境の構築で書いたように数10台規模のサーバ構築にはキックスタートが便利ですし、使うべきです。
でも、キックスタートはDHCPサーバ、TFTPサーバ、HTTPサーバといった複数のサーバで構成されるのでそれぞれの設定ファイル管理が煩雑になってしまいます。加えて、ksファイルとOSバージョンの紐付けやレポジトリ管理など設定ファイルだけでなくデプロイ対象のOSバージョンの管理が設定ファイル名頼みで、時にはksファイルをcatして。。。
いやですね、そういうの。
キックスタートの仕組みを取り入れつつ、それらの設定を纏めて管理でき、デプロイするOSとksファイルとの紐付けを抽象化できるツールがCobblerです。

Cobblerとは

本家サイトによると、CobblerとはLinuxのための高速なネットワークインストール環境を提供します。新しいLinuxシステムを導入する場合に数多くのコマンドやアプリケーションをバタバタ使いまわす必要なく、多くのLinux関連タスクを自動化します。
シンプルなコマンド体系によって、OS再インストール、メディアからのインストール、ネットワークブートによるインストール、そして仮想化環境におけるインストール(Xen、qemu、KVM、そしてVMwareをサポート)などをネットワークインストール可能なPXEを構成することができます。
Cobblerは軽量なアプリケーション(15000行程度のpythonプログラム)です。
軽量なアプリケーションですが、小規模から大規模までの様々インストールケースに対応します。それは叩いたり伸ばしたりするかのようです。エンタープライズ製品とならず、しかし、可能な限り、企業のあらゆる種類の繰り返される業務において、多大な時間を節約、短縮することに貢献します。
Cobblerは補助的にDHCPサーバ、DNSサーバ、そしてyumリポジトリーのミラーサーバ環境を構築することができます。この点では、OSインストールに特化している訳ではなく、汎用性のあるデプロイ自動化ツールです。コンフィグレーション管理システムであるPuppetと同じように管理サーバに容易に導入できます。CobblerはコマンドラインとWebインターフェースを備えています。また、APIも用意しています。良いことずくめに聞こえるが、実際本当にシンプルです。初心者は初期設定をコマンドライン(cobbler check;cobbler import)で行うと特徴的な機能のすべてをWebインターフェースで使い始めるかもしれません。拡張機能をすぐ理解する必要はありませんが、それらの機能を使う必要が出てきた時に機能を使ってみることができます。

つまり、サーバの起動後のIPアドレス取得からOSデプロイまでを自動化でき、DHCPサーバ、DNSサーバ、yumレポジトリサーバを構成できる便利なツールであるということです。

Cobblerインストールホストの構築

CobblerをインストールするサーバOSはCentOS6.2-x86_64です。
CentOS6.2-x86_64はキックスタートでインストールしました。
インストールしたパッケージグループは以下のとおりです。

%packages
@additional-devel
@base
@client-mgmt-tools
@console-internet
@debugging
@development
@directory-client
@ftp-server
@hardware-monitoring
@japanese-support
@java-platform
@large-systems
@network-file-system-client
@performance
@perl-runtime
@server-platform

OSインストール完了後、ホスト名、IPアドレスを設定しました。

epelレポジトリ追加

CobblerはEPEL(Extra Packages for Enterprise Linux)から取得できるので、EPELレポジトリ設定を行います。

# wget http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6

# rpm --import RPM-GPG-KEY-EPEL-6

# rm -f RPM-GPG-KEY-EPEL-6

# vi /etc/yum.repos.d/epel.repo
[epel]
name=EPEL RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/fedora/epel/6/$basearch/
gpgcheck=1
enabled=1

Cobblerインストール

yumでインストールすれば依存関係のあるパッケージも まとめてインストールできますが、なぜかdhcpパッケージのみ 含まれないので明示的に指定します。

# yum install cobbler dhcp
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package cobbler.noarch 0:2.0.11-2.el6 will be installed
--> Processing Dependency: libyaml for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: createrepo for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: python-cheetah for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: mod_wsgi for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: PyYAML for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: httpd for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: tftp-server for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: genisoimage for package: cobbler-2.0.11-2.el6.noarch
--> Processing Dependency: python-simplejson for package: cobbler-2.0.11-2.el6.noarch
---> Package dhcp.x86_64 12:4.1.1-25.P1.el6_2.1 will be installed
--> Processing Dependency: dhcp-common = 12:4.1.1-25.P1.el6_2.1 for package: 12:dhcp-4.1.1-25.P1.el6_2.1.x86_64
--> Running transaction check
---> Package PyYAML.x86_64 0:3.09-5.el6 will be installed
---> Package createrepo.noarch 0:0.9.8-4.el6 will be installed
--> Processing Dependency: python-deltarpm for package: createrepo-0.9.8-4.el6.noarch
--> Processing Dependency: deltarpm for package: createrepo-0.9.8-4.el6.noarch
---> Package dhcp-common.x86_64 12:4.1.1-25.P1.el6 will be updated
--> Processing Dependency: dhcp-common = 12:4.1.1-25.P1.el6 for package: 12:dhclient-4.1.1-25.P1.el6.x86_64
---> Package dhcp-common.x86_64 12:4.1.1-25.P1.el6_2.1 will be an update
---> Package genisoimage.x86_64 0:1.1.9-11.el6 will be installed
---> Package httpd.x86_64 0:2.2.15-15.el6.centos.1 will be installed
--> Processing Dependency: httpd-tools = 2.2.15-15.el6.centos.1 for package: httpd-2.2.15-15.el6.centos.1.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-15.el6.centos.1.x86_64
---> Package libyaml.x86_64 0:0.1.3-1.el6 will be installed
---> Package mod_wsgi.x86_64 0:3.2-1.el6 will be installed
---> Package python-cheetah.x86_64 0:2.4.1-1.el6 will be installed
--> Processing Dependency: python-pygments for package: python-cheetah-2.4.1-1.el6.x86_64
--> Processing Dependency: python-markdown for package: python-cheetah-2.4.1-1.el6.x86_64
---> Package python-simplejson.x86_64 0:2.0.9-3.1.el6 will be installed
---> Package tftp-server.x86_64 0:0.49-7.el6 will be installed
--> Processing Dependency: xinetd for package: tftp-server-0.49-7.el6.x86_64
--> Running transaction check
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed
---> Package dhclient.x86_64 12:4.1.1-25.P1.el6 will be updated
---> Package dhclient.x86_64 12:4.1.1-25.P1.el6_2.1 will be an update
---> Package httpd-tools.x86_64 0:2.2.15-15.el6.centos.1 will be installed
---> Package python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed
---> Package python-markdown.noarch 0:2.0.1-3.1.el6 will be installed
---> Package python-pygments.noarch 0:1.1.1-1.el6 will be installed
---> Package xinetd.x86_64 2:2.3.14-33.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
Package Arch Version Repository Size
==========================================================================================
Installing:
cobbler noarch 2.0.11-2.el6 epel 453 k
dhcp x86_64 12:4.1.1-25.P1.el6_2.1 updates 816 k
Installing for dependencies:
PyYAML x86_64 3.09-5.el6 epel 158 k
apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k
createrepo noarch 0.9.8-4.el6 base 81 k
deltarpm x86_64 3.5-0.5.20090913git.el6 base 71 k
genisoimage x86_64 1.1.9-11.el6 base 348 k
httpd x86_64 2.2.15-15.el6.centos.1 updates 813 k
httpd-tools x86_64 2.2.15-15.el6.centos.1 updates 70 k
libyaml x86_64 0.1.3-1.el6 epel 52 k
mod_wsgi x86_64 3.2-1.el6 base 66 k
python-cheetah x86_64 2.4.1-1.el6 base 365 k
python-deltarpm x86_64 3.5-0.5.20090913git.el6 base 27 k
python-markdown noarch 2.0.1-3.1.el6 base 118 k
python-pygments noarch 1.1.1-1.el6 base 562 k
python-simplejson x86_64 2.0.9-3.1.el6 base 126 k
tftp-server x86_64 0.49-7.el6 base 39 k
xinetd x86_64 2:2.3.14-33.el6 base 120 k
Updating for dependencies:
dhclient x86_64 12:4.1.1-25.P1.el6_2.1 updates 315 k
dhcp-common x86_64 12:4.1.1-25.P1.el6_2.1 updates 139 k

Transaction Summary
==========================================================================================
Install 18 Package(s)
Upgrade 2 Package(s)

Total download size: 4.6 M
Is this ok [y/N]: y
Downloading Packages:
(1/20): PyYAML-3.09-5.el6.x86_64.rpm | 158 kB 00:00
(2/20): apr-util-ldap-1.3.9-3.el6_0.1.x86_64.rpm | 15 kB 00:00
(3/20): cobbler-2.0.11-2.el6.noarch.rpm | 453 kB 00:00
(4/20): createrepo-0.9.8-4.el6.noarch.rpm | 81 kB 00:00
(5/20): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 71 kB 00:00
(6/20): dhclient-4.1.1-25.P1.el6_2.1.x86_64.rpm | 315 kB 00:00
(7/20): dhcp-4.1.1-25.P1.el6_2.1.x86_64.rpm | 816 kB 00:00
(8/20): dhcp-common-4.1.1-25.P1.el6_2.1.x86_64.rpm | 139 kB 00:00
(9/20): genisoimage-1.1.9-11.el6.x86_64.rpm | 348 kB 00:00
(10/20): httpd-2.2.15-15.el6.centos.1.x86_64.rpm | 813 kB 00:00
(11/20): httpd-tools-2.2.15-15.el6.centos.1.x86_64.rpm | 70 kB 00:00
(12/20): libyaml-0.1.3-1.el6.x86_64.rpm | 52 kB 00:00
(13/20): mod_wsgi-3.2-1.el6.x86_64.rpm | 66 kB 00:00
(14/20): python-cheetah-2.4.1-1.el6.x86_64.rpm | 365 kB 00:00
(15/20): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 27 kB 00:00
(16/20): python-markdown-2.0.1-3.1.el6.noarch.rpm | 118 kB 00:00
(17/20): python-pygments-1.1.1-1.el6.noarch.rpm | 562 kB 00:00
(18/20): python-simplejson-2.0.9-3.1.el6.x86_64.rpm | 126 kB 00:00
(19/20): tftp-server-0.49-7.el6.x86_64.rpm | 39 kB 00:00
(20/20): xinetd-2.3.14-33.el6.x86_64.rpm | 120 kB 00:00
------------------------------------------------------------------------------------------
Total 997 kB/s | 4.6 MB 00:04
警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) 
Package: centos-release-6-2.el6.centos.7.x86_64 (@anaconda-CentOS-201112102333.x86_64/6.2)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]: y
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating : 12:dhcp-common-4.1.1-25.P1.el6_2.1.x86_64 1/22
Installing : deltarpm-3.5-0.5.20090913git.el6.x86_64 2/22
Installing : libyaml-0.1.3-1.el6.x86_64 3/22
Installing : PyYAML-3.09-5.el6.x86_64 4/22
Installing : python-deltarpm-3.5-0.5.20090913git.el6.x86_64 5/22
Installing : createrepo-0.9.8-4.el6.noarch 6/22
Installing : 2:xinetd-2.3.14-33.el6.x86_64 7/22
Installing : tftp-server-0.49-7.el6.x86_64 8/22
Installing : python-markdown-2.0.1-3.1.el6.noarch 9/22
Installing : genisoimage-1.1.9-11.el6.x86_64 10/22
Installing : python-pygments-1.1.1-1.el6.noarch 11/22
Installing : python-cheetah-2.4.1-1.el6.x86_64 12/22
Installing : python-simplejson-2.0.9-3.1.el6.x86_64 13/22
Installing : httpd-tools-2.2.15-15.el6.centos.1.x86_64 14/22
Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 15/22
Installing : httpd-2.2.15-15.el6.centos.1.x86_64 16/22
Installing : mod_wsgi-3.2-1.el6.x86_64 17/22
Installing : cobbler-2.0.11-2.el6.noarch 18/22
Installing : 12:dhcp-4.1.1-25.P1.el6_2.1.x86_64 19/22
Updating : 12:dhclient-4.1.1-25.P1.el6_2.1.x86_64 20/22
Cleanup : 12:dhclient-4.1.1-25.P1.el6.x86_64 21/22
Cleanup : 12:dhcp-common-4.1.1-25.P1.el6.x86_64 22/22

Installed:
cobbler.noarch 0:2.0.11-2.el6 dhcp.x86_64 12:4.1.1-25.P1.el6_2.1

Dependency Installed:
PyYAML.x86_64 0:3.09-5.el6
apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1
createrepo.noarch 0:0.9.8-4.el6
deltarpm.x86_64 0:3.5-0.5.20090913git.el6
genisoimage.x86_64 0:1.1.9-11.el6
httpd.x86_64 0:2.2.15-15.el6.centos.1
httpd-tools.x86_64 0:2.2.15-15.el6.centos.1
libyaml.x86_64 0:0.1.3-1.el6
mod_wsgi.x86_64 0:3.2-1.el6
python-cheetah.x86_64 0:2.4.1-1.el6
python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6
python-markdown.noarch 0:2.0.1-3.1.el6
python-pygments.noarch 0:1.1.1-1.el6
python-simplejson.x86_64 0:2.0.9-3.1.el6
tftp-server.x86_64 0:0.49-7.el6
xinetd.x86_64 2:2.3.14-33.el6

Dependency Updated:
dhclient.x86_64 12:4.1.1-25.P1.el6_2.1 dhcp-common.x86_64 12:4.1.1-25.P1.el6_2.1

Complete!

※epel.repoでenable=0の場合は--enablerepoオプションで明示的に有効化する必要があります。

# yum --enablerepo=epel install cobbler

サービス起動設定

⇒ Cobblerサービス起動
# service cobblerd start cobbler
 デーモンを起動中: [ OK ]

# chkconfig cobblerd on

⇒ apacheサービス起動
# service httpd start
httpd を起動中:
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]

# chkconfig httpd on

⇒ xinetdサービス起動
# service xinetd start
xinetd を起動中: [ OK ]

# chkconfig xinetd on

Cobbler check(1回目)と修正

cobbler checkコマンドを実行すると設定すべき箇所を表示してくれます。

# cobbler check
The following are potential configuration items that you may want to fix:

1 : The 'server' field in /etc/cobbler/settings must be set to something other than localhost, or kickstarting features will not work. This should be a resolvable hostname or IP for the boot server as reachable by all machines that will use it.
2 : For PXE to be functional, the 'next_server' field in /etc/cobbler/settings must be set to something other than 127.0.0.1, and should match the IP of the boot server on the PXE network.
3 : some network boot-loaders are missing from /var/lib/cobbler/loaders, you may run 'cobbler get-loaders' to download them, or, if you only want to handle x86/x86_64 netbooting, you may ensure that you have installed a *recent* version of the syslinux package installed and can ignore this message entirely. Files in this directory, should you want to support all architectures, should include pxelinux.0, menu.c32, elilo.efi, and yaboot. The 'cobbler get-loaders' command is the easiest way to resolve these requirements.
4 : change 'disable' to 'no' in /etc/xinetd.d/tftp
5 : change 'disable' to 'no' in /etc/xinetd.d/rsync
6 : debmirror package is not installed, it will be required to manage debian deployments and repositories
7 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
8 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.
  • /etc/cobbler/settings設定
  • ```bash # cp -p /etc/cobbler/settings /etc/cobbler/settings-ORIG # vi /etc/cobbler/settings serverフィールド設定 (修正前)server: 127.0.0.1 (修正後)server: 192.168.100.110 next_serverフィールド設定 (修正前)manage_dhcp: 0 (修正後)manage_dhcp: 1 (修正前)next_server: 127.0.0.1 (修正後)next_server: 192.168.100.110 ```
  • DHCPサーバ設定
  • ```bash # vi /etc/cobbler/dhcp.template subnet 192.168.100.0 netmask 255.255.255.0 { option routers 192.168.100.1; option domain-name-servers 192.168.100.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.100.50 192.168.100.99; filename "/pxelinux.0"; default-lease-time 21600; max-lease-time 43200; next-server $next_server; } ``` 余談になりますが、/etc/cobbler/settingsのmanage_dhcpオプションを1に設定するとcobbler syncコマンド実行毎に、/etc/cobbler/dhcp.templateの内容を/etc/dhcp/dhcpd.confに反映し、かつdhcpdを再起動してくれます。便利ですね~。
  • /var/lib/cobbler/loadersのブートローダ設定
  • ```bash # cobbler get-loaders task started: 2012-03-25_225423_get_loaders task started (id=Download Bootloader Content, time=Sun Mar 25 22:54:23 2012) downloading http://dgoodwin.fedorapeople.org/loaders/README to /var/lib/cobbler/loaders/README downloading http://dgoodwin.fedorapeople.org/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo downloading http://dgoodwin.fedorapeople.org/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot downloading http://dgoodwin.fedorapeople.org/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux downloading http://dgoodwin.fedorapeople.org/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi downloading http://dgoodwin.fedorapeople.org/loaders/yaboot-1.3.14-12 to /var/lib/cobbler/loaders/yaboot downloading http://dgoodwin.fedorapeople.org/loaders/pxelinux.0-3.61 to /var/lib/cobbler/loaders/pxelinux.0 downloading http://dgoodwin.fedorapeople.org/loaders/menu.c32-3.61 to /var/lib/cobbler/loaders/menu.c32 downloading http://dgoodwin.fedorapeople.org/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi downloading http://dgoodwin.fedorapeople.org/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi *** TASK COMPLETE *** ```
  • /etc/xinetd.d/tftp有効化設定
  • ```bash # vi /etc/xinetd.d/tftp (修正前)disable = yes (修正後)disable = no ```
  • /etc/xinetd.d/rsync有効化設定
  • ```bash # vi /etc/xinetd.d/rsync (修正前)disable = yes (修正後)disable = no ```
  • xinetd再起動
  • ```bash # service xinetd restart ```
  • cobblerd再起動
  • /etc/cobbler/settingsを修正した場合はcobblerdを再起動しないと反映されないので要注意 next_server変数値を変更してもcobbler syncコマンドだけだと前の値が/tftpboot/pxelinux.cfg/defaultに上書きされてしまいま、大分悩んだ末、原因はそれでした。 ```bash # service cobblerd restart cobbler デーモンを停止中: [ OK ] cobbler デーモンを起動中: [ OK ] # cobbler sync ```

Cobbler check(2回目)と修正

# cobbler check
The following are potential configuration items that you may want to fix:
1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
2 : The default password used by the sample templates for newly installed machines (default_password_crypted in /etc/cobbler/settings) is still set to 'cobbler' and should be changed, try: "openssl passwd -1 -salt 'random-phrase-here' 'your-password-here'" to generate new one
3 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.
  • 1個目はdebian系ディストリを使用しないので無視します。
  • 3個目はfencing toolsに関してですが、無視します。
  • 2個目はパスワード設定です。

/etc/cobbler/settingsのdefault_password_cryptedのパスワードを設定します。
設定するパスワード文字列はopenssl passwd -1 -salt・・・コマンドで生成します。

# openssl passwd -1 -salt [ハッシュしたい文字列] [パスワード文字列]
XXXXXXXXXXXXXXXXXXXXXXXXX

# vi /etc/cobbler/settings
(修正前)default_password_crypted: "$1$mF86/UHC$WvcIcX2t6crBz2onWxyac."
(修正後)default_password_crypted: "XXXXXXXXXXXXXXXXXXXXXXXXX"


# service cobblerd restart
cobbler デーモンを停止中: [ OK ]
cobbler デーモンを起動中: [ OK ]


# cobbler sync

# cobbler check
The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories
2 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run 'cobbler sync' to apply changes.

distributionとprofileの定義

cobbler importコマンドを使用すると本章で説明する作業は自動的に行われます。
なので、自動的に作成される名前で問題なければ本章は割愛してもいいでしょう。

  • 配布するOSのブートカーネル、initrdイメージのコピー
  • ```bash ⇒ 配布するOSのメディアをマウントします。 # mkdir /mnt/cdrom # mount -o loop -t iso9660 /dev/sr0 /mnt/cdrom ⇒ vmlinuzとinitrdをコピーします。 # cd /tftpboot # mkdir CEMTOS62-x86_64 # cp /mnt/cdrom/images/pxeboot/vmlinuz /mnt/cdrom/images/pxeboot/initrd.img CEMTOS62-x86_64/ ```
  • 配布ディストリビューション定義の登録
  • ```bash # cobbler distro add --name=CEMTOS62-x86_64 \ --kernel=/tftpboot/CEMTOS62-x86_64/vmlinuz \ --initrd=/tftpboot/CEMTOS62-x86_64/initrd.img # cobbler sync ```
  • プロファイルの登録

プロファイルは後述するsystem定義と前述のディストリビューション定義を結びつける役割をします。
cobbler profile addコマンドのdistro=にはこのプロファイルによって結び付けたいディストリビューション名を指定します。
なお、指定したいキックスタートファイル(ksファイル)がある場合は、このプロファイルで--kickstart=というオプションを指定します。

※基本形
# cobbler profile add --name=CEMTOS62-x86_64 \
--distro=CEMTOS62-x86_64

※キックスタートファイルを指定する場合
# cobbler profile add --name=CEMTOS62-x86_64 \
--distro=CEMTOS62-x86_64 \
--kickstart=/kick/start/file/path

配布イメージの作成


  • 配布したいOSの配布イメージを一時領域へコピー
  • # mkdir /tmp/CEMTOS62-x86_64
    # mkdir /mnt/cdrom
    # mount -o loop -t iso9660 /dev/sr0 /mnt/cdrom
    # shopt -s dotglob
    # unalias cp
    # cp -rf /mnt/cdrom/* /tmp/CEMTOS62-x86_64/
    # umount /mnt/cdrom
    

  • 配布イメージのインポート

  • cobbler iportコマンドのオプションは--pathで配布イメージの一時領域ディレクトリパス、--nameでディストリビューション名を指定します。ディストリビューション定義を事前にした場合はその名前を、定義していない場合はここで指定した任意の名前がディストリビューション名として定義されます。

    # cobbler import --path=/tmp/CEMTOS62-x86_64 \
    --name=CEMTOS62-x86_64
    task started: 2012-03-26_003711_import
    task started (id=Media import, time=Mon Mar 26 00:37:11 2012)
    running: rsync -a '/tmp/CEMTOS62-x86_64/' /var/www/cobbler/ks_mirror/CEMTOS62-x86_64 --exclude-from=/etc/cobbler/rsync.exclude --progress
    
    received on stdout: sending incremental file list
    ./
    .discinfo
    31 100% 0.00kB/s 0:00:00 (xfer#1, to-check=3839/3841)
    .treeinfo
    338 100% 165.04kB/s 0:00:00 (xfer#2, to-check=3838/3841)
    CentOS_BuildTag
    14 100% 1.14kB/s 0:00:00 (xfer#3, to-check=3837/3841)
    
      < 省略 >
    
    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    
    received on stderr:
    associating kickstarts
    scanning /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot for distro signature
    scanning /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images for distro signature
    scanning /var/www/cobbler/ks_mirror/CEMTOS62-x86_64 for distro signature
    found content (breed=redhat) at /v
    *** TASK COMPLETE ***
    
    ディストリビューションとプロファイルの確認
    # cobbler distro list
    CEMTOS62-x86_64
    
    # cobbler distro report --name=CEMTOS62-x86_64
    Name : CEMTOS62-x86_64
    Architecture : x86_64
    Breed : redhat
    Comment : rhel6.2
    Initrd : /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/initrd.img
    Kernel : /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/vmlinuz
    Kernel Options : {}
    Kernel Options (Post Install) : {}
    Kickstart Metadata : {'tree': 'http://@@http_server@@/cblr/links/CEMTOS62-x86_64'}
    Management Classes : []
    OS Version : rhel6
    Owners : ['admin']
    Red Hat Management Key : <>
    Red Hat Management Server : <>
    Template Files : {}
    
    # cobbler profile list
    CEMTOS62-x86_64
    
    # cobbler profile report --name=CEMTOS62-x86_64
    Name : CEMTOS62-x86_64
    Comment :
    DHCP Tag : default
    Distribution : CEMTOS62-x86_64
    Enable PXE Menu? : 1
    Kernel Options : {}
    Kernel Options (Post Install) : {}
    Kickstart : /var/lib/cobbler/kickstarts/sample.ks
    Kickstart Metadata : {}
    Management Classes : []
    Name Servers : []
    Name Servers Search Path : []
    Owners : ['admin']
    Parent Profile :
    Red Hat Management Key : <>
    Red Hat Management Server : <>
    Repos : []
    Server Override : <>
    Template Files : {}
    Virt Auto Boot : 1
    Virt Bridge : xenbr0
    Virt CPUs : 1
    Virt File Size(GB) : 5
    Virt Path :
    Virt RAM (MB) : 512
    Virt Type : qemu
    

    クライアントシステムの定義

    ここで仮想マシンを新たに1つ作成し、MACアドレスをメモる。
    00:0C:29:D1:96:21

    # cobbler system add --name=test01 \
    --hostname=test01 \
    --profile=CEMTOS62-x86_64 \
    --interface=eth0 \
    --mac=00:0C:29:D1:96:21 \
    --static=1 \
    --ip=192.168.100.40 \
    --subnet=255.255.255.0 \
    --gateway=192.168.100.1 \
    --name-servers=8.8.8.8
    
    # cobbler system list
    test01
    
    # cobbler system report --name=test01
    Name : test01
    Comment :
    Gateway : 192.168.100.1
    Hostname : test01
    Image :
    Kernel Options : {}
    Kernel Options (Post Install) : {}
    Kickstart : <>
    Kickstart Metadata : {}
    Management Classes : []
    Name Servers : ['8.8.8.8']
    Name Servers Search Path : []
    Netboot Enabled : True
    Owners : ['admin']
    Power Management Address :
    Power ID :
    Power Password :
    Power Management Type : ipmitool
    Power Username :
    Profile : CEMTOS62-x86_64
    Red Hat Management Key : <>
    Red Hat Management Server : <>
    Server Override : <>
    Template Files : {}
    Virt Auto Boot : <>
    Virt CPUs : <>
    Virt File Size(GB) : <>
    Virt Path : <>
    Virt RAM (MB) : <>
    Virt Type : <>
    Interface ===== : eth0
    Bonding Mode :
    Bonding Master :
    Bonding Opts :
    DHCP Tag :
    DNS Name :
    IP Address : 192.168.100.40
    MAC Address : 00:0C:29:D1:96:21
    Static : True
    Static Routes : []
    Subnet : 255.255.255.0
    Virt Bridge :
    
    
    # cobbler sync
    task started: 2012-03-26_014303_sync
    task started (id=Sync, time=Mon Mar 26 01:43:03 2012)
    running pre-sync triggers
    cleaning trees
    removing: /var/www/cobbler/images/CEMTOS62-x86_64
    removing: /var/lib/tftpboot/pxelinux.cfg/01-00-0c-29-d1-96-21
    removing: /var/lib/tftpboot/pxelinux.cfg/default
    removing: /var/lib/tftpboot/grub/images
    removing: /var/lib/tftpboot/grub/grub-x86_64.efi
    removing: /var/lib/tftpboot/grub/efidefault
    removing: /var/lib/tftpboot/grub/grub-x86.efi
    removing: /var/lib/tftpboot/grub/01-00-0C-29-D1-96-21
    removing: /var/lib/tftpboot/images/CEMTOS62-x86_64
    removing: /var/lib/tftpboot/s390x/profile_list
    copying bootloaders
    trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi
    trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi
    copying distros
    copying files for distro: CEMTOS62-x86_64
    trying hardlink /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/vmlinuz -> /var/lib/tftpboot/images/CEMTOS62-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/initrd.img -> /var/lib/tftpboot/images/CEMTOS62-x86_64/initrd.img
    trying hardlink /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/vmlinuz -> /var/www/cobbler/images/CEMTOS62-x86_64/vmlinuz
    trying hardlink /var/www/cobbler/ks_mirror/CEMTOS62-x86_64/images/pxeboot/initrd.img -> /var/www/cobbler/images/CEMTOS62-x86_64/initrd.img
    copying images
    generating PXE configuration files
    generating: /var/lib/tftpboot/pxelinux.cfg/01-00-0c-29-d1-96-21
    generating: /var/lib/tftpboot/grub/01-00-0C-29-D1-96-21
    rendering DHCP files
    generating /etc/dhcp/dhcpd.conf
    cleaning link caches
    generating PXE menu structure
    running post-sync triggers
    running python triggers from /var/lib/cobbler/triggers/sync/post/*
    running python trigger cobbler.modules.sync_post_restart_services
    running: dhcpd -t -q
    received on stdout:
    received on stderr:
    running: /etc/rc.d/init.d/dhcpd restart
    received on stdout: dhcpd を停止中: [ OK ]
    dhcpd を起動中: [ OK ]
    
    received on stderr:
    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 ***
    

    test01の起動

    とりあえず、MACアドレスからIPアドレス付与したみたい。
    PXEのTFTPブートストラップを取りにいったあたりで止まった!!

    ただ、xinetdが起動していなかった。。。
    上記作業手順に追記しました。

    無事キックスタート走ってOSデプロイが自動的に進んでいきました!!

    気持ちいいー!