abims_sbr.sequenceserver

Ansible角色:SequenceServer

CI SequenceServer版本 开发者

这是一个Ansible角色,用于在Linux上安装SequenceServer(经过Ubuntu 20测试),并为每个BLAST数据库部署一个NCBI BLAST+服务器,具有以下功能:

  • BLAST作业在SLURM HPC集群上提交。
  • 服务器通过NGINX反向代理。可以通过查询LDAP服务器为私有服务器配置受限访问。
  • SequenceServer界面可以进行简单定制(例如,logo、标题、支持链接)。

要求

主机必须配置为SLURM客户端,SequenceServer用户必须拥有SLURM帐户才能在SLURM HPC集群上提交作业。 如何安装和配置SLURM HPC集群不在该角色的范围内。

主机和SLURM HPC集群上必须可用NCBI BLAST+工具(使用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数据库的变量。

每个列表中的元素(每个数据库)将生成一个可通过网址http://hostname/my_db访问的BLAST服务器(其中“hostname”是提供的服务器名称,而“name”是`sequenceserver_blast_db`变量中提供的数据库名称)。每个BLAST服务器由名为“sequenceserver-`name`.service”的systemd服务管理(配置在`/etc/systemd/system/`中)。

如果BLAST服务器需要另一个反向代理,可能需要添加指令以编辑响应头“location”,以获取结果页面的正确网址(见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 一个唯一的数据库名称,用于网址
  • port 一个唯一未使用的端口
  • path 指向一个或多个已格式化数据库所在目录的绝对路径
  • users 可选。如果数据库需要限制访问,这将很有用。授权用户的列表(LDAP "uid")。
  • ldap_businesscategory 可选。如果数据库需要限制访问,非常有用。一个ldap businessCategory值。具有此“businessCategory”值的LDAP用户将可以访问数据库。
  • group 可选。如果数据库需要限制访问,非常有用。一个LDAP组("gid")。是此组成员的LDAP用户将可以访问数据库。
  • web_page_title 可选。网页顶部显示的标题。如果未提供,默认标题为"BLAST server for name"。
  • placeholders 可选。占位符字典的列表{key: 'key1', value: 'value1'},用于定制顶部或底部的补充HTML代码(见sequenceserver_top_web_page_html_pathsequenceserver_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']}}}]

每个数据库必须唯一nameportusersldap_businesscategorygroup是可选的,可以用于通过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作业选项所需的变量。

# 获取logo图片的URL
sequenceserver_logo_url: ""
# logo图片的本地文件路径
sequenceserver_logo_path: ""
# logo将指向的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服务器上显示的logo:sequenceserver_logo_urlsequenceserver_logo_path。如果两者都设置,使用sequenceserver_logo_path给出的logo将覆盖使用sequenceserver_logo_url给出的logo。 如果文件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正确解析为Ruby常量。

# 运行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_blast_db中的usersgroup参数),则必须设置sequenceserver_ldap_url

依赖关系

角色:

示例剧本

- name: sequenceserver | 安装BLAST服务器
  hosts: blast_server
  roles:
    - abims_sbr.sequenceserver

许可证

MIT许可证

作者信息

该角色由Loraine Brillet-Guéguen于2020年创建。

关于项目

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