abims_sbr.sequenceserver
Rola Ansible: SequenceServer
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 URLport
Unikalny, nieużywany portpath
Absolutna ścieżka do katalogu, w którym znajduje się jedna lub więcej sformatowanych baz danychusers
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 forname
".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 (patrzsequenceserver_top_web_page_html_path
isequenceserver_bottom_web_page_html_path
). Na przykładplaceholders: [{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
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