next up previous contents
Next: 4.3.1.5 階層マウント Up: 4.3.1 オートマウントの設定 Previous: 4.3.1.3 インダイレクトマップ

4.3.1.4 マップ中での変数置換

さて、まったく同一のマップ情報をすべてのクライアントで共通に用いた場合、 不都合が起きるケースがあります。 たとえば、システムが全く違う種類のOSで動作している、 あるいは基本的に同じOSでもバージョンが違う、または、CPUのアーキテクチャが 違うなどです。

通常のテキストデータならこのような違いを問題にすることなく共有できますが、 実行ファイルなどのバイナリデータは、一般にこれらの環境の相違に よって使い分ける必要が出てきます。特に、自サイトで用意したツールを あるNFSサーバ に置き、これをクライアントの/usr/local/bin などのディレクトリに マウントして使用する場合、各クライアントが自分のOS環境に適合したディレクトリを 正しくマウントする必要があります。

このような場合の解決法の一つに、オートマウントのマップ中で自動的に 置き換えられる組み込み変数を利用する方法があります。 この置換えを行なうのはクライアント側のautomountdということになりますが、 使用するUNIXの種類により使用可能な組み込み変数が異なる場合がありますので、 実際に使用する場合は、必ずどのような変数がサポートされているか確かめて下さい。

Solaris 2.5のオートマウントでは、次のような変数が使用可能です。

$ARCH
クライアントのハードウェアアーキテクチャを表します。 コマンドuname -mの出力で置き換えられます。SPARCstation LXなどではsun4m、 x86ではi86pcとなります。
$CPU
クライアントのCPUアーキテクチャを表します。コマンド uname -pの出力で置き換えられます。SPARCマシンではsparc、x86では i386となります。
$HOST
クライアントのホスト名を表します。コマンド uname -nの出力で置き換えられます。
$OSNAME
クライアントのOSの種類を表します。コマンド uname -sの出力で置き換えられます。Solarisの場合、SunOSとなります。
$OSREL
クライアントのOSのリリース番号を表します。コマンド uname -rの出力で置き換えられます。Solaris 2.5では、5.5となります。
$OSVERS
クライアントのOSのバージョン番号を表します。コマンド uname -vの出力で置き換えられます。 ベンダ提供のカーネルパッチなどを当てると変化します。

unameというコマンドはPOSIXで規定されているので、最近のUNIXであれば たいがいのシステムに用意されているでしょう。

この変数を用いて、たとえば/etc/auto_direct中に

/usr/local/bin  -ro     binserver:/export/bin/$CPU

としておき、サーバbinserverの/export/bin/以下にi386とsparcの 2つのディレクトリを作成し、それぞれのCPU用のバイナリを置くようにすれば、 Solaris2.5のSPARC版とx86版が同一の設定で使用できます。 もし、上の例で、サーバ上のバイナリを置くディレクトリ名を単にi386とか sparcではなくi386-binとsparc-binにしたい場合、

/usr/local/bin  -ro     binserver:/export/bin/${CPU}-bin

のように、置き換えられる部分を{ }で囲って下さい。

この変数の置き換えは、ダイレクトマップ中でもインダイレクトマップ中でも どちらでも使用できます。かならず使用するべきだというようなものではありませんが、 頭の中に置いておけば場合によってはサイトの管理を簡略化するのに役立つでしょう。

さらに、組み込まれている変数以外の変数に値を持たせることも、automountd を 起動する時の引数を指定することで可能になります。 しかし、そこまですると各マシンの設定を共通化して管理の手間を省くという目的に かえって反する場合もあると思われますので、 十分にバランスを考慮してもっとも効率の良い方法を選択するのがよいでしょう。



Noriyo Kanayama