web-dev-qa-db-ja.com

キックスタート:CGIまたはPHPスクリプト?

キックスタート 数十台の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のコードはどこにありますか?

5

すでにpuppetを使用しているので、高度なキックスタートテンプレートについては Foreman も参照してください。

フォアマンはRubyテンプレートを使用し、柔軟な キックスタートテンプレート を許可します。

4
Not Now

テンプレート言語としてPHPを使用し、キックスタートファイルがローカルサーバー上のPHPスクリプトによってオンザフライで生成される、単純な独自のソリューションを展開しています。 。

キックスタートファイルの書き方を知っていれば、そのようなものを作成するプロセスは非常に簡単です(方法を学びたい場合は、これを参照してください Red Hatのドキュメント ):

  1. 基本的なキックスタートファイルを作成します(「テンプレート化」するパラメーターのデフォルト値をいくつか使用します)。
  2. キックスタートを.php拡張子の付いたWebサーバー上のファイルに保存します。 -kickstart.phpを使用します
  3. キックスタートファイルにPHPコードを追加してURLパラメーターを読み取り、正しいデータを設定してから、手順1のデフォルト値をPHP変数)からの出力に置き換えます。

たとえば、置き換えます

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
3
Guss

Cobblerはキックスタートプロファイルをサポートしています ですが、キックスタートはPHPで非常にうまく機能するため、ks=...行でパラメーターを渡すことができます。これを自分でスクリプト化することになるかもしれません。

2
ewwhite