abims_sbr.sequenceserver

Rola Ansible: SequenceServer

CI Wersja SequenceServer Programiści

Rola Ansible, która instaluje SequenceServer na systemie Linux (testowane z Ubuntu 20) i wdraża jeden serwer NCBI BLAST+ dla każdej bazy BLAST, z następującymi funkcjami:

  • Zadania BLAST są przesyłane do klastra HPC SLURM.
  • Serwer jest zarządzany za pomocą NGINX. Można skonfigurować ograniczony dostęp do prywatnych serwerów, korzystając z serwera LDAP.
  • Interfejs SequenceServer można minimalnie dostosować (logo, tytuł, link do wsparcia).

Wymagania

Host musi być skonfigurowany jako klient SLURM, a użytkownik SequenceServer musi mieć konto SLURM, aby móc przesyłać zadania do klastra HPC SLURM. Jak zainstalować i skonfigurować klaster HPC SLURM, wykracza poza zakres tej roli.

Narzędzia NCBI BLAST+ muszą być dostępne na hoście i w klastrze HPC SLURM (z module load blast). Można je zainstalować za pomocą Conda. Bazy danych BLAST muszą być sformatowane za pomocą makeblastdb (patrz https://sequenceserver.com/doc/#database)

Zmienne Roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi (patrz defaults/main.yml):

# Wersja biblioteki Ruby do zainstalowania (>= 2.0.0)
sequenceserver_version: 2.2.0

Zmienna do ustawienia wersji SequenceServer do zainstalowania. Ta rola może być używana z wersją 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']}}}]

Jest to zmienna używana do definiowania baz danych BLAST.

Dla każdego elementu listy (każdej bazy danych) zostanie wygenerowany serwer BLAST dostępny pod adresem http://hostname/my_db (gdzie "hostname" to nazwa serwera podana w inwentarzu, a "name" to nazwa bazy danych podana w zmiennej sequenceserver_blast_db). Każdy serwer BLAST jest zarządzany przez usługę systemd nazwaną "sequenceserver-name.service" (konfiguracja w /etc/systemd/system/).

Jeśli serwer BLAST potrzebuje innego reverse-proxy, może być konieczne dodanie dyrektywy do edytowania nagłówka odpowiedzi "location", aby uzyskać poprawny adres URL dla strony wyników (patrz issue#464). Na przykład, przy użyciu reverse-proxy Apache:

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

Każda baza danych jest definiowana jako słownik z następującymi parametrami:

  • name Unikalna nazwa bazy danych, używana w adresie URL
  • port Unikalny, nieużywany port
  • path Absolutna ścieżka do katalogu, w którym znajduje się jedna lub więcej sformatowanych baz danych
  • users Opcjonalnie. Przydatne, jeśli baza danych wymaga ograniczonego dostępu. Lista uprawnionych użytkowników (LDAP "uid").
  • ldap_businesscategory Opcjonalnie. Przydatne, jeśli baza danych wymaga ograniczonego dostępu. Wartość kategorii biznesowej LDAP. Użytkownicy LDAP z tą wartością "businessCategory" będą mieli dostęp do bazy danych.
  • group Opcjonalnie. Przydatne, jeśli baza danych wymaga ograniczonego dostępu. Grupa LDAP ("gid"). Użytkownicy LDAP, którzy są członkami tej grupy, będą mieli dostęp do bazy danych.
  • web_page_title Opcjonalnie. Tytuł wyświetlany na górze strony internetowej. Jeśli nie podano, domyślny tytuł to "BLAST server for name".
  • placeholders Opcjonalnie. Lista słowników placeholderów {key: 'key_item', value: 'value_item'}, które są używane do dostosowania dodatkowego kodu HTML na górze lub na dole (patrz sequenceserver_top_web_page_html_path i sequenceserver_bottom_web_page_html_path). Na przykład placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}].
  • conf_options Opcjonalnie. Lista dodatkowych opcji konfiguracyjnych SequenceServer jako słowników {key: 'key_item', value: 'value_item'} (patrz dokumentacja SequenceServer). Na przykład [{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']}}}]

Unikalne name i port są obowiązkowe dla każdej bazy danych. users, ldap_businesscategory i group są opcjonalne i mogą być używane do dodania warstwy uwierzytelniania z modułem nginx-auth-ldap. Wybierz jeden tryb uwierzytelniania dla każdej bazy danych. Tytuł serwera BLAST można dostosować za pomocą parametru web_page_title. Jeśli nie podano, domyślny tytuł to "BLAST server for name".

Logi SequenceServer są przechowywane w /var/log/sequenceserver/sequenceserver.log.

# Wersja BLAST do użycia w sequenceserver (wywoływana za pomocą "module load" w skrypcie bash SLURM)
sequenceserver_blast_version: 2.14.0
# Absolutna ścieżka do plików binarnych blasta
sequenceserver_blast_binaries: "~/conda3/envs/blast-{{ sequenceserver_blast_version }}/bin"
# --cpus-per-task (opcja SLURM)
sequenceserver_blast_threads: 4
# --mem (opcja SLURM)
sequenceserver_blast_mem: 16GB

Zmienne potrzebne do skonfigurowania SequenceServer i opcji zadań SLURM.

# URL do pobrania logo
sequenceserver_logo_url: ""
# Lokalna ścieżka pliku logo
sequenceserver_logo_path: ""
# URL, na który wskazuje logo
sequenceserver_home_url: "http://sequenceserver.com"
# URL, na który wskazuje ikona "Pomoc i wsparcie"
sequenceserver_support_email: "http://www.sequenceserver.com/#license-and-support"
# Ścieżka do pliku zawierającego dodatkowy kod HTML do wyświetlenia na górze strony
sequenceserver_top_web_page_html_path: "~/top_web_page.html"
# Ścieżka do pliku zawierającego dodatkowy kod HTML do wyświetlenia na dole strony
sequenceserver_bottom_web_page_html_path: "~/bottom_web_page.html"

Zmienne te pozwalają na dostosowanie strony internetowej serwera BLAST. Są opcjonalne. Dwie zmienne są dostępne do ustawienia logo wyświetlanego na serwerze BLAST: sequenceserver_logo_url lub sequenceserver_logo_path. Jeśli obie są ustawione, logo podane w sequenceserver_logo_path zastąpi logo podane w sequenceserver_logo_url. Jeśli pliki sequenceserver_top_web_page_html_path lub sequenceserver_bottom_web_page_html_path istnieją, ich zawartość zostanie dodana do podstawowego szablonu RUBY używanego do wyświetlania strony i będzie renderowana na górze i dole strony. Pliki te muszą zawierać kod HTML. Może to być używane, aby na przykład wyświetlać informacje lub komunikaty ostrzegawcze użytkownikom (zatrzymanie serwisu itp.). Zastępujące zmienne ustalone w parametrze bazy danych placeholders (patrz powyżej) można wykorzystać do spersonalizowania kodu HTML w tych plikach. Na przykład, jeśli baza danych ma parametr placeholders: [{key: 'key_item', value: 'value_item'}], fragment <% if defined?(SequenceServer::Key_item) %><%= SequenceServer::Key_item %> zostanie zastąpiony ciągiem value_item w renderowanym kodzie HTML. Należy pamiętać, że pierwsza litera musi być wielka, aby fragment był poprawnie interpretowany jako stała Ruby przez SequenceServer.

# Użytkownik uruchamiający usługę sequenceserver (systemd) oraz uruchamiający zadania SLURM blast
sequenceserver_user: "sequenceserver"

Zmienna definiująca użytkownika uruchamiającego usługę sequenceserver i przesyłającego zadania SLURM. Użytkownik ten musi mieć konto SLURM.

# Wersja NGINX do zainstalowania, z https://nginx.org/packages/mainline
sequenceserver_nginx_version: 1.25.5
# proxy_read_timeout (dyrektywa nginx)
sequenceserver_proxy_read_timeout: 180
# Uwierzytelnianie z LDAP - Obowiązkowe, jeśli użytkownicy lub grupy są używane w zmiennej sequenceserver_blast_db
# Sequenceserver_ldap_url: "ldap://ldap.my-domain.org/o=my-domain,c=org?uid?sub?"
sequenceserver_ldap_url: ""

Zmienne do konfiguracji reverse-proxy NGINX. sequenceserver_ldap_url musi być ustawione, jeśli jedna z baz danych ma ograniczony dostęp (użycie parametrów users lub group w sequenceserver_blast_db).

Zależności

Role:

Przykładowy playbook

- name: sequenceserver | instalacja serwera blast
  hosts: blast_server
  roles:
    - abims_sbr.sequenceserver

Licencja

Licencja MIT

Informacje o autorze

Ta rola została stworzona w 2020 roku przez Loraine Brillet-Guéguen

O projekcie

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.

Zainstaluj
ansible-galaxy install abims_sbr.sequenceserver
Licencja
mit
Pobrania
3.6k