sequenceserver

Ansible Роль: SequenceServer

CI Версия 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 Уникальное имя базы данных, используется в URL
  • port Уникальный неиспользуемый порт
  • path Абсолютный путь к директории, где находятся одна или несколько отформатированных баз данных
  • users Необязательный. Полезно, если доступ к базе данных ограничен. Список авторизованных пользователей (LDAP "uid").
  • ldap_businesscategory Необязательный. Полезно, если доступ к базе данных ограничен. Значение ldap businessCategory. Пользователи LDAP с этим значением "businessCategory" будут иметь доступ к базе данных.
  • group Необязательный. Полезно, если доступ к базе данных ограничен. Группа LDAP ("gid"). Пользователи LDAP, являющиеся членами этой группы, будут иметь доступ к базе данных.
  • web_page_title Необязательный. Заголовок, отображаемый в верхней части веб-страницы. Если не указано, заголовок по умолчанию будет "BLAST server for name".
  • 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
Лицензия
mit
Загрузки
3582