sequenceserver
Ansible Роль: SequenceServer
Ansible роль для установки SequenceServer на Linux (проверено на Ubuntu 20) и развертывания одного NCBI BLAST+ сервера для каждой базы данных BLAST. Основные возможности:
- Задания BLAST отправляются на кластер HPC с использованием SLURM.
- Сервера используют обратное проксирование с NGINX. Ограниченный доступ можно настроить для частных серверов через запрос к ldap серверу.
- Интерфейс SequenceServer можно минимально настроить (логотип, заголовок, ссылка на поддержку).
Требования
Хост должен быть настроен как клиент SLURM, а пользователь SequenceServer должен иметь аккаунт SLURM для отправки заданий на кластер HPC. Настройка и установка кластера SLURM не входит в объём данной роли.
Инструменты NCBI BLAST+ должны быть доступны на хосте и на кластере SLURM (с помощью команды 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.
Для каждого элемента списка (каждой базы данных) будет создан BLAST сервер, доступный по адресу http://hostname/my_db (где "hostname" — это имя сервера, указанное в инвентаре, а "name" — имя базы данных, указанное в переменной sequenceserver_blast_db
). Каждый BLAST сервер управляется сервисом systemd с именем "sequenceserver-name
.service" (конфигурация находится в /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
Уникальное имя базы данных, используется в URLport
Уникальный неиспользуемый портpath
Абсолютный путь к директории, где находятся одна или несколько отформатированных баз данныхusers
Необязательный. Полезно, если доступ к базе данных ограничен. Список авторизованных пользователей (LDAP "uid").ldap_businesscategory
Необязательный. Полезно, если доступ к базе данных ограничен. Значение ldap businessCategory. Пользователи LDAP с этим значением "businessCategory" будут иметь доступ к базе данных.group
Необязательный. Полезно, если доступ к базе данных ограничен. Группа LDAP ("gid"). Пользователи LDAP, являющиеся членами этой группы, будут иметь доступ к базе данных.web_page_title
Необязательный. Заголовок, отображаемый в верхней части веб-страницы. Если не указано, заголовок по умолчанию будет "BLAST server forname
".placeholders
Необязательный. Список объектов-заполнителей{key: 'key_item', value: 'value_item'}
, используемых для настройки дополнительного HTML-кода вверху или внизу (см.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
.
# Версия BLAST для использования в sequenceserver (вызывается с помощью "module load" в bash-скрипте slurm)
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
. Если оба установлены, логотип, указанный в 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 %>
будет заменён строкой value_item
в сгенерированном HTML-коде. Обратите внимание, что первая буква должна быть заглавной в фрагменте, чтобы быть правильно интерпретированной как константа Ruby сервером SequenceServer.
# Пользователь, запускающий сервис 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: ""
Переменные для настройки обратного прокси NGINX.
sequenceserver_ldap_url
должен быть установлен, если одна из баз данных имеет ограниченный доступ (используется параметр users
или group
в sequenceserver_blast_db
).
Зависимости
Роли:
Пример плейбука
- name: sequenceserver | установка сервера blast
hosts: blast_server
roles:
- abims_sbr.sequenceserver
Лицензия
MIT License
Информация об авторе
Эта роль была создана в 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/ansible-sequenceserver