Open Composerインストールマニュアル

1. インストール

Open ComposerはOpen OnDemand上で動作します。Open OnDemandのアプリケーションディレクトリ/var/www/ood/apps/sys/にOpen Composerを保存してください。

$ cd /var/www/ood/apps/sys/
$ sudo git clone https://github.com/RIKEN-RCCS/OpenComposer.git

2. 設定

./conf.yml.erb.sampleを参考にして./conf.yml.erbを作成してください。

$ cd OpenComposer
$ sudo cp conf.yml.erb.sample conf.yml.erb
項目名設定内容デフォルト値
apps_dirアプリケーションのディレクトリ(None)
scheduler利用するスケジューラ(slurmpbsprosgefujitsu_tcs(None)
clustersクラスタの定義(None)
data_dir投入したジョブの情報の保存先${HOME}/composer
login_nodeOpen OnDemandのWebターミナルを起動した際のログイン先(None)
ssh_wrapperSSHを用いて他のノードのジョブスケジューラを用いる場合のコマンド(None)
binジョブスケジューラのコマンドのパス(None)
bin_overridesジョブスケジューラの各コマンドのパス(None)
sge_rootGrid Engineのルート用ディレクトリ(SGE_ROOT (None)
history履歴ページの追加表示項目OC_HISTORY_JOB_NAME, OC_HISTORY_PARTITION, OC_HISTORY_SUBMISSION_TIME
footerフッタに記載する文字(None)
thumbnail_widthホームページの各アプリケーションのサムネイルの横幅100
highlight_themescript/submitセクションに使用するhighlight.jsのテーマ名vs
directive_colorscript/submitセクションのスケジューラ指示文の文字色#D73A49
navbar_colorナビゲーションバーの色#3D3B40
dropdown_colorドロップダウンメニューの色
footer_colorフッタの色
category_colorホームページのカテゴリの背景色#5522BB
description_colorアプリケーションページのアプリケーション説明の背景色
form_colorアプリケーションページのテキストエリアの背景色#BFCFE7
non_script_colorscriptセクションに影響を与えないフォームの背景色#FFE28A
non_script_button_colorscriptセクションに影響を与えないボタンの背景色#FFBF00
submit_colorsubmitセクションのみに影響を与えるフォームの背景色#FFCCCC
submit_button_colorsubmitセクションのみに影響を与えるボタンの背景色#FFAAAA

apps_dirおよびschedulerは必須です(schedulerclustersの中に定義しても構いません)。

2.1. clusters

複数のクラスタを設定します。本設定では、schedulerlogin_nodessh_wrapperbinbin_overridessge_rootがクラスタ毎に設定できます。1つのクラスタのみを使う場合、本設定は省略可能です。

下記では、fugakuprepostというクラスタにおいて、それぞれfujitsu_tcsslurmのジョブスケジューラを利用することを定義しています。

clusters:
  fugaku:
    scheduler: "fujitsu_tcs"
  prepost:
    scheduler: "slurm"
    bin_overrides:
      sbatch: "/usr/local/bin/sbatch"

下記では、fugakuprepostというクラスタにおいて、両方ともslurmのジョブスケジューラを利用していますが、異なるマシンからslurmを実行することを定義しています。

scheduler: "slurm"
clusters:
  fugaku:
    ssh_wrapper "ssh fugaku.example.net"
  prepost:
    ssh_wrapper "ssh prepost.example.net"

2.2. bin_overrides

各コマンドのパスを設定します。本設定は省略可能です。

ジョブスケジューラがslurmの場合は、sbatchscontrolscancelsacctを設定できます。

bin_overrides:
  sbatch:   "/usr/local/bin/sbatch"
  scontrol: "/usr/local/bin/scontrol"
  scancel:  "/usr/local/bin/scancel"
  sacct:    "/usr/local/bin/sacct"

ジョブスケジューラがpbsproの場合は、qsubqstatqdelを設定できます。

bin_overrides:
  qsub:   "/usr/local/bin/qsub"
  qstat: "/usr/local/bin/qstat"
  qdel:  "/usr/local/bin/qdel"

ジョブスケジューラがsgeの場合は、qsubqstatqdelqacctを設定できます。

bin_overrides:
  qsub:   "/usr/local/bin/qsub"
  qstat: "/usr/local/bin/qstat"
  qdel:  "/usr/local/bin/qdel"
  qacct: "/usr/local/bin/qacct"

ジョブスケジューラがfujitsu_tcsの場合は、pjsubpjstatpjdelを設定できます。

bin_overrides:
  pjsub:  "/usr/local/bin/pjsub"
  pjstat: "/usr/local/bin/pjstat"
  pjdel:  "/usr/local/bin/pjdel"

2.3. history

履歴ページの必須表示項目は「Job ID」、「Application」、「Script Location」、「Script Name」、「Status」です。それに対して、historyでは追加表示項目を設定します。本設定を省略した場合、「Job Name」、「Partiton」、「Submission Time」が自動的に設定されます。下記のコードと同じです。OC_HISTORY_JOB_NAMEOC_HISTORY_PARTITIONOC_HISTORY_SUBMISSION_TIMEは特殊な変数であり、「Job Name」、「Partiton」、「Submission Time」をそれぞれ指します。

history:
  OC_HISTORY_JOB_NAME:
  OC_HISTORY_PARTITION:
  OC_HISTORY_SUBMISSION_TIME:
history table

追加表示項目をなくしたい場合は、空配列を定義します。

history: []
history table

ジョブスケジューラから得られるプロファイルの値を表示項目に設定することができます。「Job ID」をクリックすると表示される表の左の値をhistoryに設定します。また、labelを用いると、表示ラベルを設定できます。labelを用いない場合は、そのままの値が用いられます。

history table
history:
  OC_HISTORY_JOB_NAME:
  Account:
  AllocCPUS:
    label: Allocated CPUs
history table

3. Open OnDemandへの登録

Open Composerを/var/www/ood/apps/sys/に保存すると、Open OnDemandのホームページにOpen Composerのアイコンが表示されます。Open Composerのアイコンが表示されない場合は、Open OnDemand用の設定ファイル/var/www/ood/apps/sys/OpenComposer/manifest.ymlを確認してください。

Open Composer上のアプリケーションをOpen OnDemandのホームページに表示することもできます。例えば、/var/www/ood/apps/sys/OpenComposer/sample_apps/Slurmというアプリケーションを表示させたい場合は、同名のディレクトリをOpen OnDemandのアプリケーションディレクトリに作成します(# mkdir /var/www/ood/apps/sys/Slurm)。そして、そのディレクトリ内に下記のようなOpen OnDemand用の設定ファイルmanifest.ymlを作成します。

# /var/www/ood/apps/sys/Slurm/manifest.yml
---
name: Slurm
url: https://<your Open OnDemand URL>/pun/sys/OpenComposer/Slurm

4. 一般ユーザによるインストール

一般ユーザ権限でOpen Composerをインストールすることもできます。ただし、事前に管理者権限でOpen OnDemandのApp Developmentの機能を有効化する必要があります。

ナビゲーションバーの「</> Develop」の「My Sandbox Apps (Development)」を選択します(Webブラウザのウィンドウサイズが小さい場合は、「</> Develop」ではなく「</>」と表示されます)。

Navbar

「New App」をクリックします。

New App

「Clone Existing App」をクリックします。

Clone an existing app

「Directory name」に任意の名前(ここではOpenComposer)、「Git remote」に「https://github.com/RIKEN-RCCS/OpenComposer.git」を記入し、「Submit」をクリックします。

New repository

「Files」をクリックし、conf.yml.erb.sampleconf.yml.erbにリネームしください。その後、「Launch Open Composer」をクリックします。

Bundle Install

5. ローカルにおける開発方法

ローカルでOpen Composerを起動させる手順は下記の通りです。

$ git clone https://github.com/RIKEN-RCCS/OpenComposer.git
$ cd OpenComposer
$ cp misc/Gemfile .
$ bundle install
$ cp conf.yml.erb.sample conf.yml.erb
$ RACK_ENV=development bundle exec rackup

Webブラウザでhttp://localhost:9292にアクセスしてください。なお、ジョブ投入が行えないなどの制限があります。

6. ジョブスケジューラの追加

ジョブスケジューラを追加したい場合、スーパークラスSchedulerが定義されたlib/scheduler.rbを参考にして、lib/schedulers/以下にジョブスケジューラのためのRubyスクリプトを作成してください。下記のPBS Pro(lib/schedulers/pbspro.rb)のようにSchedulerクラスを継承してください。ジョブを投入するsubmit()メソッド、ジョブをキャンセルするcancel()メソッド、ジョブの情報を問い合わせるquery()メソッドを定義する必要があります。

class Pbspro < Scheduler

また、いくつかのクラスタでは、ジョブスケジューラのコマンド(例:qstat)がラッパースクリプトになっていて、オリジナルのコマンドをユーザが実行できない場合があります。そのような場合、既存のスケジューラのスクリプトを少し変更することで対応できることがあります。例えば、lib/schedulers/miyabi.rbでは、下記のようにPBS Proのスケジューラを継承して新しいクラスMiyabiを定義しています。Miyabiクラスではquery()メソッドだけが定義されており、他のメソッドはlib/schedulers/pbspro.rbで定義されたものを利用しています。

class Miyabi < Pbspro

ジョブスケジューラのスクリプトの作成後、./conf.yml.erbで下記のようにスケジューラを指定します。

scheduler: miyabi