キックスタート 数十台のRHEL6/SL6サーバーを使用したいと思います。ただし、これらのサーバーの一部は異なり、サーバーのクラスごとに新しいks.cfgファイルを作成したくありません。
テンプレートからキックスタートファイルをその場で動的に生成する方法はありますか?
たとえば、次のような行をカーネルに追加すると、次のようになります。
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi ip=dhcp
次に、スクリプトks.cgiは、これがどのホストであるか(MACアドレスを介して)を判別し、そのホストに適したキックスタートオプションを出力できます。オプションで、次のようにパラメーターをスクリプトに渡すことで、いくつかのオプションをオーバーライドできます。
APPEND ks=http://192.168.1.100/cgi-bin/ks.cgi?NODETYPE=production&IP=192.168.2.80
サーバーをキックスタートした後、このシステムでCfengine/Puppetをアクティブ化し、お気に入りの構成管理製品を使用してシステムを管理します。
xCAT で実験していますが、面倒すぎることがわかっています。 Cobbler を調べましたが、これが行われるかどうかはわかりません。
更新:
独自のソリューションについては、O'Reillyの本で説明されています。 KickstartとYumを使用したRPMベースのシステムの管理、第3章。Kickstartインストールのカスタマイズ>動的ks.cfg 。このスレッドのコメント:
このようなツールを実装することは、このショートカットの範囲を超えていますが、高レベルの設計について説明することができます。このようなソリューションは、データストア(変更されるもの)とテンプレートソリューション(変更されないもの)を組み合わせます。データストアは、IPアドレスやホスト名などのマシンごとのデータを保持します。また、特定のマシンのデータを取得できるように、一意の識別子(おそらくホスト名)も必要になります。データストアは、フラットファイル、XMLデータ、またはPostgreSQLやMySQLなどのリレーショナルデータベースの場合があります。
次に、システムを呼び出すには、マシンの一意の識別子をURLパラメータとして渡します。例えば:
ブート:linux ks = http://your.kickstart.server/gen_config?host-server25
この例では、CGI(またはサーブレットなど)がマシンserver25のks.cfgを生成します。
しかし、ks.cgiのコードはどこにありますか?
すでにpuppetを使用しているので、高度なキックスタートテンプレートについては Foreman も参照してください。
フォアマンはRubyテンプレートを使用し、柔軟な キックスタートテンプレート を許可します。
テンプレート言語としてPHPを使用し、キックスタートファイルがローカルサーバー上のPHPスクリプトによってオンザフライで生成される、単純な独自のソリューションを展開しています。 。
キックスタートファイルの書き方を知っていれば、そのようなものを作成するプロセスは非常に簡単です(方法を学びたい場合は、これを参照してください Red Hatのドキュメント ):
たとえば、置き換えます
network --device eth0 --bootproto dhcp --hostname SOME_STATIC_HOSTNAME
と
network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>
基本的にはそれだけです。
きれいなURLが欲しかったので、ブートローダーは次のように言います。
linux ksdevice=eth0 ks=http://myserver/kickstart/rhel6/networkname/servername/ks.cfg
すべてのパラメーターをパス要素として指定します。そのために、次のようなApacheWebサーバー用の.htaccess
ファイルを作成しました。
RewriteEngine On
RewriteBase /kickstart
RewriteRule kickstart/(.*) /company-kickstart.php/$1
次に、PHPスクリプトは次のようになります:
<?php
list($empty,$os,$envtype,$hostname,$notimportant) =
explode("/",$_SERVER['PATH_INFO']);
header("Content-Type: text/plain"); # important, otherwise kickstart fails
?>
# Kickstart file automatically generated by my script.
#version=<?php echo $os;?>
install
url --url=http://my.local.mirror/<?php echo $os;?>/os/x86_64
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp --hostname <?php echo $hostname;?>
# ... rest of kickstart parameters
Cobblerはキックスタートプロファイルをサポートしています ですが、キックスタートはPHPで非常にうまく機能するため、ks=...
行でパラメーターを渡すことができます。これを自分でスクリプト化することになるかもしれません。