ライセンスの制限と確保

制限スクリプトを書く
制限スクリプトは,サイト規模でインストールしてあるWolframシステムの管理に大変便利である.これを使うと,ネットワーク上で許可されていないユーザがWolframシステムにアクセスするのを阻止したり,特定のユーザへのライセンスを確保したりすることができる.制限スクリプトはプラットフォーム間で互換であり,IPv4とIPv6のどちらもサポートし,曖昧さのない制御が可能である.これを書くためには,プログラミングの経験も必要ない.制限スクリプトの文法は,HTMLファイルへのアクセスを制御するためにWebサーバで使用される.htaccessファイルの文法と似ている.
確保されたライセンスは常に確保されている.それが使用中であるかどうかにかかわらず,他のユーザやマシンからはアクセスできない.指定されたユーザあるいはマシンのいずれもWolframシステムを実行していないとしても,他のユーザおよびマシン用のライセンスプールは確保されたライセンス数だけ減少する.
典型的な制限スクリプトのレイアウトは次のようになる.定義の後に,制限スクリプトの例が挙げてある.

用語の定義

次はWolframシステムライセンスを確保したり制限したりするために使用する用語である.
名前
説明
AuthName Sample
スクリプトの名前を定義する
AuthGroupFile mathlmgroup .txt
ユーザあるいはマシンのグループの定義を含むファイルを指定する.この行はキーワードgroupまたはhostgroupに関連するときのみ必要である
order ( allow,deny | deny,allow )
これら2つの指示子の優先順位を定義する.後者が前者に優先する.また,デフォルトのアクセス状態を後者に設定する.デフォルトのアクセス状態は,明示的な規則にマッチしないリクエストに適用される.デフォルト値はorder deny,allowである
allow from ( all | machines )
リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを許可する
allow hostgroup machinegroups
リストされたマシングループのメンバーからのライセンスリクエストを許可する
deny from ( all | machines )
リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲からのライセンスリクエストを却下する
deny hostgroup machinegroups
リストされたマシングループのメンバーからのライセンスリクエストを却下する
allow user ( all | users )
リストされたユーザからのライセンスリクエストを許可する
allow group usergroups
リストされたユーザグループのメンバーからのライセンスリクエストを許可する
deny user (all | users )
リストされたユーザからのライセンスリクエストを却下する
deny group usergroups
リストされたユーザグループのメンバーからのライセンスリクエストを却下する
reserve [ count ] from machines
リストされたホスト名,ドメイン,IPアドレス,IPアドレスの範囲のそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する
reserve [ count ] hostgroup machinegroups
リストされたマシングループのメンバーそれぞれに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する
reserve [ count ] user users
リストの中の各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する
reserve [ count ] group usergroups
リストされたユーザグループの各ユーザに,フロントエンドライセンスとカーネルライセンスを count 個ずつ確保する
reservesub [ count ] from machines
リストされたホスト名,ドメイン,IPアドレス,IPアドレスのそれぞれに対して count 個のサブフロントエンドプロセスと count 個のサブカーネルプロセスを確保する
reservesub [ count ] hostgroup machinegroups
リストされたマシングループのそれぞれに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する
reservesub [ count ] user users
リストの中の各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する
reservesub [ count ] group usergroups
リストされたユーザグループの各ユーザに対して count 個のサブフロントエンドプロセスライセンスと count 個のサブカーネルプロセスライセンスを確保する
ライセンス確保および制限のための用語
上記の制限スクリプト指示子はすべて,追加の設定をしなくても自動的にIPv4およびIPv6環境をサポートする.

ライセンスの確保

reserveおよびreservesub指示子を使うと,特定ユーザあるいはマシンが使用するライセンスが保証できる.確保されたライセンスは常に確保された状態であり,他のユーザやマシンからはアクセスできないことに注意する.
場合によっては,確保するフロントエンド数とカーネルライセンス数が同じでないこともあろう.この場合はreservefereservesubfereservekernel, reservesubkernelという追加の指示子を使うとよい.reservefeおよびreservekernelのシンタックスはreserveのシンタックスと同一であり,reservesubfereservesubkernelのシンタックスはreservesubのシンタックスと同一である.
並列計算あるいはグリッド計算のためにカーネルおよびフロントエンドを確保する場合,reservesubreservesubfereservesubkernelといったサブプロセスの確保も必要である.例えば,ネットワーク上のユーザが大きいデータをモデル化するために16個の並列カーネルを必要としているとする.このとき,他のユーザがモデル化のプロセスを邪魔しないですむよう,reservesubkernel指示子を使うのである.
制限スクリプトの例
以下の例で,制限スクリプトの主な特徴を示す.

グループを含まないスクリプト

次のスクリプトは,user1およhostname1からのWolframシステムライセンスのリクエストを却下する.それ以外のユーザおよびマシンからのライセンスリクエストは,許可される.
次のスクリプトは,192.168.0.1から192.168.0.5,および192.168.2.1から192.168.2.12までの範囲のuser1からuser5までのユーザからのライセンスリクエストのみを許可する.この他のユーザやマシンからのライセンスリクエストは,却下される.

グループを含むスクリプト

次のスクリプトは上記のスクリプトと同じ制限を課すが,ユーザとマシンがグループおよびホストグループで指定されている.
これはmathlmgroup1.txtファイルである.これは1つのマシングループと2つのユーザグループを定義する.

デフォルトのアクセス状態を例示するスクリプト

以下のスクリプトでは,すべてのユーザ,host1以外のマシンからのライセンスリクエストが許可される.user1host1にログインしているときにライセンスをリクエストしても,ライセンスは許可される.リクエストは,このスクリプトの両方の規則にマッチしなければならない.また,order指示子の値によりallow指示子が優先であることが指定されている.host1にログインしているuser2からのライセンスリクエストは却下されることに注意する.
上のスクリプトと下のスクリプトでは,order指示子の値だけが異なるが,スクリプトの意味は逆転してしまう.下のスクリプトでは,user1からのライセンスリクエストしか許可しない.host1にログインしているuser1からのライセンスリクエストは却下される.そのようなリクエストは,両方の規則にマッチするが,deny規則が優先であるためにリクエストが却下されるのである.

ライセンス確保のスクリプト

以下のスクリプトは,すべてのライセンスリクエストを許可する.これは,アドレス192.168.0.1に3つのカーネルライセンスを,user1にフロントエンドライセンスとカーネルライセンスを1つずつ確保している.確保されたライセンスは常に確保されおり,他のマシンやユーザからはアクセスできない.
以下のスクリプトはすべてのライセンスリクエストを許可する.これはuser1に対してフロントエンドライセンスを2つ,カーネルライセンスを2つ,カーネルサブプロセスライセンスを4つ確保している.これで並列計算に必要なリソースをuser1に保証するのである.並列計算についての詳細は「Parallel Computing Toolsユーザガイド」を参照のこと.
以下のスクリプトは,user1user2hostname1hostname2domain1.com192.168.1.1から192.168.2.9の範囲のアドレスからのライセンスリクエストのみを許可する.これではhostname2にカーネルライセンスとフロントエンドライセンスを3つずつ,192.168.1.1から192.168.2.9までの範囲のアドレスにもカーネルライセンスとフロントエンドライセンスを3つずつ,user1にはカーネルライセンスとフロントエンドライセンスを1つずつ,user2にもカーネルライセンスとフロントエンドライセンスを1つずつ確保する.このスクリプトでは,合計で8つのフロントエンドライセンスと8つのカーネルライセンスが確保される.
reserveの最初のインスタンスが以下の形式でも書けることが分かれば,Sample8で制限されるライセンスの数を可視化したほうが簡単かもしれない.
reserve 3 from hostname2
reserve 3 from [192.168.1.1 192.168.2.9]

グループのライセンス確保スクリプト

以下のスクリプトもSample8のスクリプトと同じ制限を課すが,ユーザとマシンがグループおよびホストグループで指定されている.
これはmathlmgroup2.txtファイルである.これは2つのマシングループと1つのユーザグループを定義する.
制限スクリプトを使う
制限スクリプトを使うためには,オプション-restrictの後にスクリプトのパス名を置いて MathLM を起動する.制限スクリプトには,どのようなファイル名(および拡張子)を与えることもできる.コマンドラインオプションの詳細については,「MathLM の起動」を参照のこと.
制限スクリプトあるいはAuthGroupFileを変更したら,MathLM を再起動しなければならない.