abims_sbr.sequenceserver

Ansible Role: SequenceServer

CI SequenceServer version Developers

このAnsibleロールは、Linux上にSequenceServerをインストールし、各BLASTデータベース用に1つのNCBI BLAST+サーバーを展開します。以下の機能があります:

  • BLASTジョブはSLURM HPCクラスタで提出されます。
  • サーバーはNGINXでリバースプロキシされます。プライベートサーバー用にはldapサーバーをクエリすることで制限付きアクセスを設定できます。
  • SequenceServerインターフェースは最小限カスタマイズできます(ロゴ、タイトル、サポートリンク)。

要件

ホストはSLURMクライアントとして設定されており、SequenceServerユーザーはSLURM HPCクラスタでジョブを提出するためにSLURMアカウントを持っている必要があります。 SLURM HPCクラスタをインストールして構成する方法はこのロールの範囲外です。

NCBI BLAST+ツールはホストとSLURM HPCクラスタ両方で利用可能である必要があります(module load blastを使用)。これらはCondaでインストール可能です。BLASTデータベースはmakeblastdbでフォーマットする必要があります(詳しくはhttps://sequenceserver.com/doc/#database)。

ロール変数

使用可能な変数は以下に示されており、デフォルト値も含まれています(defaults/main.ymlを参照):

# インストールするruby gemのバージョン (>= 2.0.0)
sequenceserver_version: 2.2.0

インストールするSequenceServerのバージョンを設定するための変数。このロールはSequenceServerバージョン >= 2.0.0と共に使用できます。

sequenceserver_blast_db:
    - name: 'my_db'
      port: '4567'
      path: '/path/to/my/db'
      users: ['fbar','jsmith']
      web_page_title: 'blablabla'
      placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}]
      conf_options: [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}, {key: 'options', value: {'blastn': {'default': ['-task blastn', '-evalue 1e-5'], 'short-seq': ['-task blastn-short', '-evalue 1e-1']}}}]

これはBLASTデータベースを定義するための変数です。

リストの各要素(各データベース)には、URL http://hostname/my_db でアクセスできるBLASTサーバーが生成されます("hostname"はインベントリで提供されたサーバーの名前、"name"はsequenceserver_blast_db変数で提供されたデータベースの名前です)。各BLASTサーバーは「sequenceserver-name.service」というsystemdサービスで管理されます(設定は/etc/systemd/system/にあります)。

BLASTサーバーに別のリバースプロキシが必要な場合、レスポンスヘッダー「location」の編集ディレクティブを追加して、結果ページの正しいURLを取得する必要があるかもしれません(詳しくはissue#464)。例えば、Apacheリバースプロキシの場合:

<LocationMatch "^/(?<instance>[^/]+)/">
   Header edit Location "(^http[s]?://)([a-zA-Z0-9\.\-]+)(:\d+)?/(%{MATCH_INSTANCE}e/)?" "/%{MATCH_INSTANCE}e/" env=MATCH_INSTANCE
</LocationMatch>

各データベースは以下のパラメータの辞書として定義されます:

  • name データベースのURLで使用される一意の名前
  • port 一意の未使用ポート
  • path フォーマットされたデータベースが1つ以上あるディレクトリへの絶対パス
  • users オプション。データベースに制限付きアクセスが必要な場合に便利です。許可されたユーザーのリスト(LDAPの「uid」)。
  • ldap_businesscategory オプション。データベースに制限付きアクセスが必要な場合に便利です。LDAPのbusinessCategory値。これにアクセスできる録音展示用ユーザーはこの「businessCategory」値を持っています。
  • group オプション。データベースに制限付きアクセスが必要な場合に便利です。LDAPグループ(「gid」)。このグループのメンバーであるLDAPユーザーはデータベースにアクセスできます。
  • web_page_title オプション。ウェブページの上部に表示されるタイトル。提供されない場合、デフォルトのタイトルは「BLAST server for name」です。
  • placeholders オプション。上部または下部の補助的HTMLコードをカスタマイズするために使用されるプレースホルダー辞書のリスト {key: 'key_item', value: 'value_item'}sequenceserver_top_web_page_html_pathおよびsequenceserver_bottom_web_page_html_pathを参照)。例えば placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}]
  • conf_options オプション。補助的なSequenceServer構成オプションのリスト(辞書として) {key: 'key_item', value: 'value_item'}SequenceServerのドキュメントを参照)。例えば [{key: 'job_lifetime', value: '10080'}, {key: 'databases_widget', value: 'tree'}, {key: 'options', value: {'blastn': {'default': ['-task blastn', '-evalue 1e-5'], 'short-seq': ['-task blastn-short', '-evalue 1e-1']}}}]

各データベースには一意のnameportが必要です。 usersldap_businesscategory、およびgroupはオプションであり、nginx-auth-ldapモジュールを使用して認証層を追加するために使用できます。各データベースのために一つの認証モードを選択してください。 BLASTサーバーのタイトルはweb_page_titleパラメータでカスタマイズできます。提供されない場合、デフォルトのタイトルは「BLAST server for name」です。

SequenceServerのログは/var/log/sequenceserver/sequenceserver.logに保存されます。

# SequenceServerで使用するBLASTのバージョン(SLURMのbashスクリプト内で"module load"で呼び出される)
sequenceserver_blast_version: 2.14.0
# BLASTバイナリーへの絶対パス
sequenceserver_blast_binaries: "~/conda3/envs/blast-{{ sequenceserver_blast_version }}/bin"
# --cpus-per-task (SLURMオプション)
sequenceserver_blast_threads: 4
# --mem (SLURMオプション)
sequenceserver_blast_mem: 16GB

SequenceServerとSLURMジョブオプションを構成するために必要な変数。

# ロゴ画像を取得するためのURL
sequenceserver_logo_url: ""
# ロゴ画像のローカルファイルパス
sequenceserver_logo_path: ""
# ロゴが指すURL
sequenceserver_home_url: "http://sequenceserver.com"
# "ヘルプとサポート"のアイコンが指すURL
sequenceserver_support_email: "http://www.sequenceserver.com/#license-and-support"
# ウェブページの上部に表示する補助HTMLコードを含むファイルへのパス
sequenceserver_top_web_page_html_path: "~/top_web_page.html"
# ウェブページの下部に表示する補助HTMLコードを含むファイルへのパス
sequenceserver_bottom_web_page_html_path: "~/bottom_web_page.html"

これらの変数はBLASTサーバーのウェブページをカスタマイズするために使用されます。これはオプションです。 BLASTサーバーで表示されるロゴを設定するためにsequenceserver_logo_urlまたはsequenceserver_logo_pathの2つの変数が利用可能です。両方が設定されている場合、sequenceserver_logo_pathで指定されたロゴがsequenceserver_logo_urlで指定されたロゴを上書きします。 sequenceserver_top_web_page_html_pathsequenceserver_bottom_web_page_html_pathが存在する場合、そこに含まれる内容はウェブページを表示するために使用される基本的なRUBYテンプレートに追加され、ページの上部または下部にレンダリングされます。これらのファイルにはHTMLコードを含む必要があります。例えば、ユーザーに情報や警告メッセージ(サービス停止など)を表示するために使用できます。 データベースパラメータのplaceholders(上記参照)で設定されたプレースホルダーは、これらのファイル内のHTMLコードをカスタマイズするために使用できます。例えば、データベースのパラメータにplaceholders: [{key: 'key_item', value: 'value_item'}]がある場合、スニペット<% if defined?(SequenceServer::Key_item) %><%= SequenceServer::Key_item %>はレンダリングされたHTMLコード内でvalue_itemに置き換えられます。スニペット内の最初の文字は大文字である必要があります。

# sequenceserverサービス(systemd)を実行し、SLURM blastジョブを実行するユーザー
sequenceserver_user: "sequenceserver"

sequenceserverサービスを実行し、SLURMジョブを提出するユーザーを定義するための変数。このユーザーはSLURMアカウントを持っている必要があります。

# インストールするNGINXのバージョン(https://nginx.org/packages/mainlineから)
sequenceserver_nginx_version: 1.25.5
# proxy_read_timeout (nginxディレクティブ)
sequenceserver_proxy_read_timeout: 180
# LDAPでの認証 - sequenceserver_blast_db変数でユーザーまたはグループが使用される場合は必須
# Sequenceserver_ldap_url: "ldap://ldap.my-domain.org/o=my-domain,c=org?uid?sub?"
sequenceserver_ldap_url: ""

NGINXリバースプロキシを構成するための変数。 sequenceserver_ldap_urlは、データベースのいずれかに制限付きアクセスがある場合(sequenceserver_blast_db内のusersまたはgroupの使用)、設定する必要があります。

依存関係

ロール:

使用例プレイブック

- name: sequenceserver | blastサーバーをインストール
  hosts: blast_server
  roles:
    - abims_sbr.sequenceserver

ライセンス

MITライセンス

作者情報

このロールは2020年にLoraine Brillet-Guéguenによって作成されました。

プロジェクトについて

Installs SequenceServer on Linux and deploys one NCBI BLAST+ server for each BLAST database, reverse-proxied by NGINX, submitting jobs on a SLURM HPC cluster.

インストール
ansible-galaxy install abims_sbr.sequenceserver
ライセンス
mit
ダウンロード
3.6k