Browse Tag: cobbler

cobbler web を nginx 経由で使う方法の続き

http://www.sssg.org/blogs/naoya/archives/2495 で紹介した方法ですが、肝心の /cblr/svc/ 以下の uswsgi の設定が抜けていたのでご紹介します。

まず、uWSGI が必要なので、コンパイルします。

今回は、1.9 系の最新版を使ってみます。

# yum install python python-devel libxml2 libxml2-devel python-setuptools zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake -y
# wget http://projects.unbit.it/downloads/uwsgi-1.9.21.1.tar.gz
# tar zxf uwsgi-1.9.21.1.tar.gz
# cd uwsgi-1.9.21.1
# python setup.py build
# make

make すると、カレントディレクトリに uwsgi プログラムができるので、これを利用します。

cobbler の /cblr/svc 以下や cobbler web 用の uwsgi は、次のコマンドで起動します。

# /usr/sbin/uwsgi --wsgi-file /var/www/cobbler/svc/services.py --socket 127.0.0.1:9090 --processes 4 --master --harakiri 120
# /usr/sbin/uwsgi --wsgi-file /usr/share/cobbler/web/cobbler.wsgi --socket 127.0.0.1:9091 --processes 4 --master --harakiri 120

手動で起動する場合は、supervisord を利用すると便利ですね。

これで、http:///cblr/svc/op/ks/system/s1 とかで、サーバの kickstart を参照できますね!

cobbler をインストールすると、Apache HTTPd も一緒にインストールされるので、ポートが競合しないようにしましょう。

cobbler web を nginx 経由で使う方法

かなり久しぶりのブログになりました。

cobbler web 便利なんですが、最近は apache より nginx を使う機会が多いので、その設定をしてみました。
次のような設定を /etc/nginx/conf.d/cobbler.conf として作成すればいいでしょう。

server {
    listen 80;
    server_name _;
    charset utf-8;

    location ~ ^/cblr(?!/svc/)(.*)?$ {
        alias /var/www/cobbler/$1;
    }

    location ~ ^/cobbler_track/(.*)?$ {
        alias /var/www/cobbler/$1;
    }

    location /cobbler {
        alias /var/www/cobbler;
        autoindex on;
    }

    #location /cobbler_webui_content {
    #    alias /var/www/cobbler_webui_content;
    #}

    location /cblr/svc/ {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9090;
    }

    location /cobbler_api {
        rewrite ^/cobbler_api/?(.*) /$1 break;
        proxy_pass http://127.0.0.1:25151;
    }

    location /cobbler_web {
        rewrite ^/cobbler_web/?(.*) /$1 break;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:9091;
    }

    access_log /var/log/nginx/cobbler.log;
}

簡単で便利ですね!

cobbler ではまったメモ

cobbler 経由で、CentOS 5.7 x86_64 を kickstart 経由でインストールしたとき、次のようなログは cobbler サーバ上の syslog に出力されていました。


Feb 7 21:43:23 10.0.4.3 ERROR insufficient disk space: installing
package initscripts-8.45.38-2.el5.centos.x86_64 needs 791MB on the /
filesystem
Feb 7 21:43:23 10.0.4.3 ERROR error running transaction:
installing package m2crypto-0.16-8.el5.x86_64 needs 823MB on the /
filesystem
...

正しく、100GB で ext4 でフォーマットしているのにもかかわらず、ディスク用不足というメッセージでインストールに失敗していました。
しばらく原因を探ってみると、cobbler のベースの distro の CentOS がバージョン 5.3 で、ext4 に対応する前のバージョンだったことが原因でした。CentOS 5 系では、ext4 がサポートされたのは 5.5 からでした。

ということで、次のような感じで、cobbler ベースの distro の CentOS をバージョン 5.7 に差し替えて無事インストールすることができるようになりました。hoge というプロファイルがある場合は、次のように distro を入れ替えることができます。


# cobbler import --path=rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/5.7/os/x86_64/ --name=centos57-x86_64
# cobbler profile edit --name=hoge --distro=centos57-x86_64
# cobbler profile edit --name=hoge-xen --distro=centos57-xen-x86_64

すこしはまってしまったので、備忘録代わりにメモをしておきます。

RE: 独自/ミラー yum リポジトリを作ろう

アシアルさんのブログに「独自/ミラー yum リポジトリを作ろう」というエントリが公開されました。

とても分かりやすく「独自/ミラー yum リポジトリ」を作る方法がまとまっている素晴らしいエントリです。

アシアルさんのブログでは、rsync や createrepo などを手動で使っていますが、これを cobbler というツールを使うともっと簡単に「独自/ミラー yum リポジトリ」を作成することができます。

まず、CentOS 5.x のミラーを作成する方法を紹介します。

EPEL を設定してから、cobbler をインストールします。

$ sudo yum install cobbler

CentOS ミラーサイト一覧から、自分がいる国にいる近いサイトの rsync 可能なミラーサイトを選びます。ミラーサイトを選んだら、次のコマンドでミラーします。

$ sudo cobbler import –path=rsync://your_centos_mirror_site/centos –name=centos –arch=x86_64

rsync し終わったら、httpd を起動してから、/etc/yum.repos.d に次のような yum リポジトリを追加します。

cobbler をインストールすると、自動的に必要な yum リポジトリの公開設定が /etc/httpd/conf.d/cobbler.conf にされています。

[centos]
name=centos
baseurl=http://localhost/cobbler/repo_mirror/centos
enabled=1
gpgcheck=0
priority=1

ミラーを更新したい場合は、次のような cron を root ユーザの cron で設定します。

/usr/bin/cobbler reposync –tries=3 –no-fail > /dev/null 2>&1

独自の yum リポジトリを作成した場合は、RPM が入っているディレクトリ (例えば /home/naoya/rpms) を用意して、次のコマンドを実行するだけです。

$ sudo cobbler repo add –name=”local” –mirror=”/home/naoya/rpms”

独自の yum リポジトリを更新する場合も、上の cobbler reposync コマンド一発で同期させることができます。

独自の yum リポジトリの設定は、次のようなになります。

[local]
name=local
baseurl=http://localhost/cobbler/repo_mirror/local
enabled=1
gpgcheck=0
priority=1

いかがでしょうか?

cobbler を使うと、とても簡単に yum リポジトリを構築することができます。

ぜひ、試してみてください!

cobbler 1.4.3 -使い方1-

cobbler 1.4.3 をインストールしたところで、さっそく設定して使ってみる。

cobbler の設定ファイルは、/etc/cobbler/settings にある。設定ファイルが正しいか確認するために、次のコマンドを実行する。

$ sudo cobbler check
#0: since iptables may be running, ensure 69, 80, 25150, and 25151 are unblocked
#1: 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
#2: fencing tools were not found, and are required to use the (optional) power management features. install cman to use them

このように問題がある設定がリストアップされるので、上から順番になおしていく。ちなみに、上の問題は僕が使う環境ではあったく問題ないのでそのままにした。

そして、distro をインポートする。例えば、CentOS 5.3 x86_64 をインポートするには、次のようにする。

$ sudo cobbler import –name=centos5 –mirror=rsync://ftp.iij.ad.jp/centos/5.3/os/x86_64/

インポートすると、通常の CentOS と Xen 用の distro が自動的に生成される。生成された distro 一覧を見るには、次のコマンドを実行する。

$ sudo cobbler distro list
centos5-x86_64
centos5-xen-x86_64

それぞれの distro 詳細をみるには、次のコマンドを実行する。

$ sudo cobbler distro report –name=centos5-x86_64
distro               : centos5-x86_64
architecture         : x86_64
breed                : redhat
(省略)

distro をインポートすると、自動的に profile も作られる。profile 一覧を見るには、次のコマンドを実行する。上からそれぞれ通常カーネルの CentOS、Xen カーネルの CentOS、レスキュー用の CentOS、の profile となっている。

$ sudo cobbler profile list
centos5-x86_64
centos5-xen-x86_64
rescue-centos5-x86_64

PXE kickstart 経由でブートすると、profile 一覧がメニューとして表示されて、メニューを選択することでその profiile の設定にそって kickstart でインストールすることができる。profile には、kickstart ファイルの設定を含んでいる。profile に含まれる kickstart ファイルを確認するには、次のコマンドを実行する。

$ sudo cobbler sudo cobbler profile report –name=centos5-x86_64
profile : centos5-x86_64
distro : centos5-x86_64
comment :
created : Thu Mar 12 00:31:19 2009
dhcp tag : default
enable menu : True
kernel options : {}
kickstart : /var/lib/cobbler/kickstarts/sample.ks
(省略)

上の例だと、/var/lib/cobbler/kickstarts/sample.ks が使われることが分かる。使用する kickstart ファイルを変更したいときには、次のコマンドを実行する。

$ sudo cobbler profile edit –name=centos5-x86_64 –kickstart=/var/lib/cobbler/kickstarts/hoge.ks

続いて、CentOS などの場合、ローカルに yum リポジトリをもつと自分の RPM なども含めて管理することがとても便利だけれど、cobbler でもこの機能をサポートしている。例えば、CentOS の os パッケージを管理したい場合は、次のコマンドを実行する。

$ sudo cobbler repo add –name=centos5-x86_64-os –mirror=http://ftp.iij.ad.jp/pub/linux/centos/5/os/x86_64/

パッケージの内容を mirror サイトと同期したい場合は、次のコマンドを実行する。

$ sudo cobbler reposync

次のような cron を設定しておけば、毎日自動的に yum リポジトリを更新することができる。

45 4 * * * /usr/bin/cobbler reposync –tries=3 –no-fail > /dev/null 2>&1

もちろん、ローカルでビルドした RPM もリポジトリも、次のコマンドを実行することで含めることができる。

$ sudo cobbler repo add –name=centos5-x86_64-origs –mirror=/home/hoge/rpm/RPMS

追加した yum リポジトリは、このままだと profile には適用されていないので、profile に追加するために、次のコマンドを実行する。

$ sudo cobbler profile edit –name=centos5-x86_64 –repos=”[‘centos5-x86_64-addons’, ‘centos5-x86_64-os’, ‘centos5-x86_64-extras’, ‘centos5-x86_64-updates’, ”centos5-x86_64-origs]”

これで、centos5-x86_64 の profile でインストールすると、ローカルの yum リポジトリが自動的に使われてパッケージのインストールが行われる。さらに /etc/cobbler/settings の yum_post_install_mirror に 1 を指定することで、インストール後もローカル yum リポジトリが使われるように /etc/yum.repos.d/cobbler-config.repo が配置されるので、とても便利。

ここまでみて分かるとおり、cobbler コマンドは「cobbler [distro|profile|repo|system|…] サブコマンド」という形式ととっていて、とても分かりやすい。サブコマンドには、次の種類がある。

  • add: 設定の追加をする
  • remove: 設定の削除をする
  • list: 設定の一覧を表示する
  • report: 設定の一覧を詳細表示する
  • copy: 設定をコピーする
  • rename: 設定の名前を変更する
  • replicate: 別のサーバへ cobbler の設定をコピーする(いわゆる、cobbler マスターサーバのレプリケーション)
cobbler コマンドの使い方は、man cobbler するとかなり詳しく分かりやすく解説されているので、とても参考になる。
次は、system の使い方について解説する。

cobbler 1.4.3 -概要編-

本番サーバをインストールするときに、cobbler を愛用しているけれど、このところ cobbler のバージョンアップが激しく、現在の安定版のバージョンは 1.4.3 になっている。かなり便利な機能がたくさん追加されたので、cobbler の基礎から使い方までをまとめてみる。

概要

cobbler には、便利な機能が盛り沢山。

  • MAC アドレスと IP アドレス、あるいはメニューによる PXE ネットワークブート
  • すでに存在している Linux システムの再インストールやアップグレード
  • 再インストールは、PXE 環境がなくても可能で SSH 経由ごしに再インストールする、Func とも組み合わせることができる
  • ネットワークインストール用の ISO イメージを生成する(PXE は必要ない)
  • キックスタートやイメージによる仮想マシンをインストールすることができる
  • koan と呼ばれているヘルパーツールを使う
  • 仮想化マシンをインストールするためのパラメータ(CPU、メモリ、ディスク容量)は中央管理する
  • 自分専用の PXE ツリーを管理する
  • インストール用の PXE メニューを自動生成する

あと、便利なのは memtest86+ がインストールされていると、自動的に PXE ブートメニューに追加されているのが便利すぎる(※環境によっては自動生成されない場合がある、詳細は別エントリにて)。cobbler を知ってしまうと、自分で PXE ネットワークブート環境を作る気がおこらなくなるほど便利です。

インストールターゲット

  • RHEL, Fedora, CentOS, OpenSuSE, Debian, Ubuntu, Windows

サーバプラットフォーム

  • RHEL 4+, Fedora, Debian, OpenSuSE

BSD 系は対応してないけれど、Linux なら主要なディストリビューションをサポートしています。僕は、どちらも CentOS 5 x86_64 の環境で使ってます。

コンポーネント

cobbler は、次の4つのコンポーネントから構成されているので、ざっと概念だけ説明しておきます。

  • distro
  • インストールするためのディストリビューションイメージ
  • DVD やインターネット上からインポートすることで追加する
  • profile
  • 実際にインストールするプロファイル
  • distro をインポートすると、自動的にデフォルトのプロファイルが生成される
  • インストールするときに使用する kickstart ファイルなどを指定する
  • system
  • ホスト名、IP アドレス、などの特定のホストに依存したプロファイル
  • bonding などもサポートしている
  • オプション扱い、プロファイルの方は必須になっている
  • repo
  • ローカルのリポジトリ
  • yum、apt、rsync、rhn、をサポートしている、breed というオプションで設定する

インストール

インストールは、いたって簡単 DownloadInstructions のページに SRPM とそれぞれのディストリビューション用の RPM があるのでダウンロードする。cobbler RPM をインストールするとき、httpd などいくつか必要なパッケージがあるので、注意する。僕は、SRPM をダウンロードして、cobbler で管理している自分独自のローカル yum リポジトリに入れてからインストールしている。今のところ、cobbler のマスターサーバは一台だけど。

セットアップ

cobbler は、/usr/bin/cobbler コマンドを使う。セットアップまわりは、以前のブログの内容とほとんど変わっていない。init.d スクリプトの問題もなおっている。

次回は、distro、profile、system、repo の作り方とその使い方について解説します。

cobbler から memtest86+ を実行する

管理している1台のサーバから、メモリの ECC Error が発生した。そこで、memtest86 を実行して再確認するため、cobbler から memtest86 を実行してみた。

まず、cobbler 0.9 以上から簡単に memtest86 を PXE メニューに追加できる。

cobbler 0.9 以上にしないといけないということで、思い切って cobbler 1.0.3 にバージョンアップしてみた。cobbler は SRPM はすでに用意されているので、通常ユーザの %_topdir に SRPM をインストールしてビルドした。ビルドは、問題なく成功した。
cobbler を 0.8.3 からバージョンアップすると、settings ファイルの場所が /var/lib/settings から /etc/cobbler/settings に変わったので、cobbler check を繰り返しながら /etc/cobbler/settings を変更した。ちなみに 0.8.3 の頃の settings ファイルはそのまま 1.0.3 で使えないので新たにインストールされた /etc/cobbler/settings を変更する必要があるので注意する。
cobbler 1.0.3 になって、変わったなと思ったことは、次のとおり。

– cobbler sync しても、どのプロファイルがあるのか表示しなくなった
– settings ファイルの位置と設定内容が変わった
– settings ファイルで、設定できる項目がいっきに増えた(例えば、デフォルトの kickstart ファイルを指定できるようになった)

次に、memtest86 は、すでにメンテナンスされていないということでかわりの memtest86+ という後継バージョンを使うのが普通みたい。今日時点の最新版は、2.0.1。

CentOS 5.1 64 ビット版の memtest86+ は 1.6 と古いバージョンということで 2.0.1 の最新版にしてみた。 memtest86+ 1.6 の SRPM をインストールして、SPEC ファイルのバージョンだけ書き換えた。stub32.h というインクルードファイルが見つからないというエラーがでるが、glibc-devel.i386 パッケージをインストールすることで解決できる。無事ビルドできたら、さっそく memtest86+ をインストールする。

$ sudo yum install memtest86+

あとは、cobbler sync すると自動的に memtest86+ が PXE メニューに追加される。

$ sudo cobbler sync
$ less /tftpboot/pxelinux.cfg/default

DEFAULT menu
PROMPT 0
MENU TITLE Cobbler | http://cobbler.et.redhat.com
TIMEOUT 200
TOTALTIMEOUT 6000
ONTIMEOUT local

LABEL local
MENU LABEL (local)
MENU DEFAULT
LOCALBOOT 0

LABEL centos51-x86_64
kernel /images/centos51-x86_64/vmlinuz
MENU LABEL centos51-x86_64
append ksdevice=eth0 lang= kssendmac syslog=10.0.0.1:25150 text initrd
=/images/centos51-x86_64/initrd.img ks=http://10.0.0.1/cblr/svc/op/ks/profile/ce
ntos51-x86_64

LABEL memtest86+-2.01
kernel /images/memtest86+-2.01
MENU LABEL memtest86+-2.01

MENU end

おおー、memtest86+ がメニューに追加されている。さっそく、メモリがおかしいサーバを PXE ブートしてみると、たしかに memtest86+ が追加されている。

これはかなり便利!!!

cobbler を使ってみた

新しく到着したサーバには、CD ドライブがついていないということでネットワークインストールしてみようと考えた。そこで、巷で話題の cobbler 0.8.3 を使ってみた。まず、試験環境を VMWare 上の CentOS 5.1 64 ビット版で用意して試してみた。mizzy さんの記事がとても参考になった。

まず、rpmforge をインストールする。

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

次に、cobbler をインストールする。
# yum install cobbler

tftp とか httpd とか必要なものがいっきにインストールされる。

さっそく設定してみる。

# cobbler check

The following potential problems were detected:
#0: The ‘server’ field in /var/lib/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.
#1: For PXE to be functional, the ‘next_server’ field in /var/lib/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.
#2: change ‘disable’ to ‘no’ in /etc/xinetd.d/tftp

ということで、/var/lib/cobbler/settings を次のように変更する。変更する部分は、manage_dhcp を 1、next_server と server の部分をホストの IP アドレスに書き換える。


bootloaders:
ia64: /var/lib/cobbler/elilo-3.6-ia64.efi
standard: /usr/lib/syslinux/pxelinux.0
default_kickstart: /etc/cobbler/default.ks
dhcpd_bin: /usr/sbin/dhcpd
dhcpd_conf: /etc/dhcpd.conf
dnsmasq_bin: /usr/sbin/dnsmasq
dnsmasq_conf: /etc/dnsmasq.conf
httpd_bin: /usr/sbin/httpd
kernel_options:
ksdevice: eth0
lang: ‘ ‘
text: ~
koan_path: ”
manage_dhcp: 1
manage_dhcp_mode: isc
minimize_syncs: 1
next_server: ‘192.0.168.1’
server: ‘192.0.168.1’
syslog_port: 25150
tftpboot: /tftpboot
tftpd_bin: /usr/sbin/in.tftpd
tftpd_conf: /etc/xinetd.d/tftp
webdir: /var/www/cobbler
xmlrpc_port: 25151
yum_core_mirror_from_server: 0

次に tftp を有効にするために、/etc/xinetd.d/tftp を次のように変更する。disable を yes から no にする。

# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}

cobblerd を起動する。

# /etc/init.d/cobblerd start
# chkconfig cobblerd on

xinetd を起動する。

# /etc/init.d/xinetd start
# chkconfig xinetd on

httpd を起動する。

# /etc/init.d/httpd start
# chkconfig httpd on

とりあえず、iptables をオフにしておく。

# /etc/init.d/iptales stop
# chkconfig iptables off

dhcpd をインストールする。

# yum install dhcp

/etc/cobbler/dhcp.template を次のように変更する。IP アドレスの部分を環境に応じて書き換える。

ddns-update-style interim;

allow booting;
allow bootp;

ignore client-updates;
set vendorclass = option vendor-class-identifier;

subnet 192.0.168.0 netmask 255.255.255.0 {
option routers 192.0.168.1;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.0.168.10 192.0.168.20;
filename “/pxelinux.0”;
default-lease-time 21600;
max-lease-time 43200;
next-server $next_server;
}

$insert_cobbler_system_definitions

そして、ネットワークに必要なファイルを作る。今回は、CentOS 5.1 DVD イメージをダウンロードしてマウントしてある。/var/www/cobbler に必要なファイルを自動的に作ってくれるので便利。容量は、だいだい くらい 4GB くらい必要。けっこう時間がかかる。僕の環境 (Macboom on VMware fusion)だと、だいだい 30 分くらいかかった。

# mount -rt iso9660 /dev/cdrom /mnt
# cobbler import –mirror=/mnt –name=centos51
(書略)
—————- (syncing)
sync distro: centos51-xen-x86_64
sync distro: centos51-x86_64
sync profile: centos51-xen-x86_64
sync profile: centos51-x86_64

cobbler のキックスタートファイルを変更したときは、次のコマンドを実行する。

# cobbler sync
sync distro: centos-xen-x86_64
sync distro: centos-x86_64
sync profile: centos-xen-x86_64
sync profile: centos-x86_64
Shutting down dhcpd: [FAILED]
Starting dhcpd: [OK]

どんなファイルがあるか確認してみる。

# cobbler report
distro : centos-x86_64
kernel : /var/www/cobbler/ks_mirror/centos/images/pxeboot/vmlinuz
initrd : /var/www/cobbler/ks_mirror/centos/images/pxeboot/initrd.img
kernel options : {}
architecture : x86_64
ks metadata : {‘tree’: ‘http://192.0.168.1/cblr/links/centos-x86_64’}
breed : redhat
(略)
profile : centos-x86_64
distro : centos-x86_64
kickstart : /etc/cobbler/kickstart_fc6.ks
kernel options : {}
ks metadata : {}
virt file size : 5
virt ram : 512
repos : []
(略)
cd

# cobbler list
distro centos-xen-x86_64
profile centos-xen-x86_64
distro centos-x86_64
profile centos-whx86_64

kickstart のファイルは、/etc/cobbler/kickstart_fc6.ks だということが分かる。

付属の /etc/init.d/cobbler は restart がおかしいので、次のように修正する

45c45
< killproc /usr/bin/cobblerd -TERM >& /dev/null

> pkill -9 cobblerd >/dev/null 2>/dev/null

ちなみに上の不具合は、最新版の 1.x 系では修正されているので、今から試してみる人は 1.x 系をおすすめします。

cobbler を使うと、ローカルの yum ミラーリポジトリも扱うことができるので、かなり便利なのでおすすめです。