abims_sbr.sequenceserver
Ansible Role: SequenceServer
この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 forname
」です。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']}}}]
各データベースには一意のname
とport
が必要です。
users
、ldap_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_path
やsequenceserver_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