abims_sbr.sequenceserver

Ansible Rolle: SequenceServer

CI SequenceServer Version Entwickler

Eine Ansible Rolle, die SequenceServer auf Linux (getestet mit Ubuntu 20) installiert und einen NCBI BLAST+ Server für jede BLAST-Datenbank bereitstellt, mit folgenden Funktionen:

  • Die BLAST-Jobs werden auf einem SLURM HPC-Cluster eingereicht.
  • Die Server werden mit NGINX als Reverse-Proxy konfiguriert. Eingeschränkter Zugang kann für private Server eingerichtet werden, indem ein LDAP-Server abgefragt wird.
  • Die Benutzeroberfläche von SequenceServer kann minimal angepasst werden (Logo, Titel, Support-Link).

Anforderungen

Der Host muss als SLURM-Client konfiguriert sein und der SequenceServer-Benutzer muss ein SLURM-Konto haben, um Jobs im SLURM HPC-Cluster einreichen zu können. Eine Anleitung zur Installation und Konfiguration eines SLURM HPC-Clusters ist nicht Teil dieser Rolle.

Die NCBI BLAST+ Tools müssen auf dem Host und im SLURM HPC-Cluster verfügbar sein (mit module load blast). Sie können mit Conda installiert werden. BLAST-Datenbanken müssen mit makeblastdb formatiert werden (siehe https://sequenceserver.com/doc/#database).

Rollenvariablen

Verfügbare Variablen sind unten aufgeführt, zusammen mit den Standardwerten (siehe defaults/main.yml):

# Version des Ruby Gems, die installiert werden soll (>= 2.0.0)
sequenceserver_version: 2.2.0

Variable zur Festlegung der Version von SequenceServer, die installiert werden soll. Diese Rolle kann mit SequenceServer-Version >= 2.0.0 verwendet werden.

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']}}}]

Dies ist die Variable, die verwendet wird, um die BLAST-Datenbanken zu definieren.

Für jedes Element der Liste (jede Datenbank) wird ein BLAST-Server generiert, der unter der URL http://hostname/my_db (wobei "hostname" der Name des Servers ist, der im Inventar angegeben ist, und "name" der Name der Datenbank ist, der in der Variable sequenceserver_blast_db angegeben ist) zugänglich ist. Jeder BLAST-Server wird mit einem systemd-Dienst namens "sequenceserver-name.service" verwaltet (Konfiguration in /etc/systemd/system/).

Wenn der BLAST-Server einen weiteren Reverse-Proxy benötigt, könnte es erforderlich sein, eine Direktive hinzuzufügen, um den Antwortheader "location" zu bearbeiten, um die richtige URL für die Ergebnisseite zu erhalten (siehe issue#464). Zum Beispiel, mit einem Apache Reverse-Proxy:

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

Jede Datenbank wird als Wörterbuch mit folgendem Parameter definiert:

  • name Ein einzigartiger Name für die Datenbank, der in der URL verwendet wird.
  • port Ein einzigartiger nicht verwendeter Port.
  • path Absoluter Pfad zum Verzeichnis, in dem eine oder mehrere formatierte Datenbanken liegen.
  • users Optional. Nützlich, wenn die Datenbank eingeschränkten Zugang benötigt. Liste autorisierter Benutzer (LDAP "uid").
  • ldap_businesscategory Optional. Nützlich, wenn die Datenbank eingeschränkten Zugang benötigt. Ein LDAP businessCategory Wert. LDAP-Benutzer mit diesem "businessCategory"-Wert haben Zugang zur Datenbank.
  • group Optional. Nützlich, wenn die Datenbank eingeschränkten Zugang benötigt. Eine LDAP-Gruppe ("gid"). LDAP-Benutzer, die Mitglied dieser Gruppe sind, haben Zugang zur Datenbank.
  • web_page_title Optional. Der Titel, der oben auf der Webseite angezeigt wird. Wenn nicht angegeben, ist der Standardtitel "BLAST-Server für name".
  • placeholders Optional. Eine Liste von Platzhalterwörterbüchern {key: 'key_item', value: 'value_item'}, die verwendet werden, um den oberen oder unteren ergänzenden HTML-Code anzupassen (siehe sequenceserver_top_web_page_html_path und sequenceserver_bottom_web_page_html_path). Zum Beispiel placeholders: [{key: 'key1', value: 'value1'}, {key: 'key2', value: 'value2'}].
  • conf_options Optional. Eine Liste von ergänzenden SequenceServer-Konfigurationsoptionen als Wörterbücher {key: 'key_item', value: 'value_item'} (siehe SequenceServer-Dokumentation). Zum Beispiel [{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']}}}].

Einzigartige name und port sind für jede Datenbank erforderlich. users, ldap_businesscategory und group sind optional und können verwendet werden, um eine Authentifizierungsebene mit dem nginx-auth-ldap-Modul hinzuzufügen. Wählen Sie für jede Datenbank einen einzigen Authentifizierungsmodus. Der Titel des BLAST-Servers kann mit dem Parameter web_page_title angepasst werden. Wenn nicht angegeben, ist der Standardtitel "BLAST-Server für name".

Die Logs von SequenceServer werden in /var/log/sequenceserver/sequenceserver.log gespeichert.

# Version von BLAST, die im sequenceserver verwendet werden soll (aufgerufen mit "module load" im SLURM-Bash-Skript)
sequenceserver_blast_version: 2.14.0
# Absoluter Pfad zu den BLAST-Binaries
sequenceserver_blast_binaries: "~/conda3/envs/blast-{{ sequenceserver_blast_version }}/bin"
# --cpus-per-task (SLURM-Option)
sequenceserver_blast_threads: 4
# --mem (SLURM-Option)
sequenceserver_blast_mem: 16GB

Variablen, die benötigt werden, um SequenceServer und SLURM-Joboptionen zu konfigurieren.

# URL, um das Logo-Bild abzurufen
sequenceserver_logo_url: ""
# Lokaler Dateipfad zum Logo-Bild
sequenceserver_logo_path: ""
# URL, auf die das Logo verweisen wird
sequenceserver_home_url: "http://sequenceserver.com"
# URL, auf die das "Hilfe und Unterstützung"-Symbol verweisen wird
sequenceserver_support_email: "http://www.sequenceserver.com/#license-and-support"
# Pfad zur Datei mit dem zusätzlichen HTML-Code, der oben auf der Webseite angezeigt werden soll
sequenceserver_top_web_page_html_path: "~/top_web_page.html"
# Pfad zur Datei mit dem zusätzlichen HTML-Code, der unten auf der Webseite angezeigt werden soll
sequenceserver_bottom_web_page_html_path: "~/bottom_web_page.html"

Diese Variablen ermöglichen die Anpassung der BLAST-Server-Webseite. Sie sind optional.
Zwei Variablen stehen zur Verfügung, um das auf dem BLAST-Server angezeigte Logo festzulegen: sequenceserver_logo_url oder sequenceserver_logo_path. Wenn beide angegeben sind, überschreibt das Logo, das mit sequenceserver_logo_path angegeben ist, das Logo, das mit sequenceserver_logo_url angegeben ist.
Wenn die Dateien sequenceserver_top_web_page_html_path oder sequenceserver_bottom_web_page_html_path vorhanden sind, wird deren Inhalt in die Basis-RUBY-Vorlage, die verwendet wird, um die Webseite anzuzeigen, hinzugefügt und wird oben und unten auf der Webseite gerendert. Diese Dateien müssen HTML-Code enthalten. Dies kann verwendet werden, um beispielsweise Informationen oder Warnmeldungen an Benutzer anzuzeigen (Dienstunterbrechungen usw.).
Die Platzhalter, die im Datenbankparameter placeholders (siehe oben) festgelegt sind, können verwendet werden, um den HTML-Code in diesen Dateien anzupassen. Zum Beispiel, wenn die Datenbank den Parameter placeholders: [{key: 'key_item', value: 'value_item'}] hat, wird der Code <% if defined?(SequenceServer::Key_item) %><%= SequenceServer::Key_item %> im gerenderten HTML-Code durch den String value_item ersetzt. Bitte beachten Sie, dass der erste Buchstabe im Snippet großgeschrieben sein muss, um korrekt als Ruby-Konstante von SequenceServer interpretiert zu werden.

# Benutzer, der den sequenceserver-Dienst (systemd) ausführt und SLURM-BLAST-Jobs ausführt
sequenceserver_user: "sequenceserver"

Variable zur Definition des Benutzers, der den sequenceserver-Dienst ausführt und die SLURM-Jobs einreicht. Dieser Benutzer muss ein SLURM-Konto haben.

# NGINX-Version, die installiert werden soll, von https://nginx.org/packages/mainline
sequenceserver_nginx_version: 1.25.5
# proxy_read_timeout (nginx-Direktive)
sequenceserver_proxy_read_timeout: 180
# Authentifizierung mit LDAP - Pflicht, wenn Benutzer oder Gruppen in der Variable sequenceserver_blast_db verwendet werden
# Sequenceserver_ldap_url: "ldap://ldap.my-domain.org/o=my-domain,c=org?uid?sub?"
sequenceserver_ldap_url: ""

Variablen zur Konfiguration des NGINX Reverse-Proxys.
sequenceserver_ldap_url muss gesetzt werden, wenn eine der Datenbanken eingeschränkten Zugang hat (Verwendung des Parameters users oder group in sequenceserver_blast_db).

Abhängigkeiten

Rollen:

Beispiel-Playbook

- name: sequenceserver | BLAST-Server installieren
  hosts: blast_server
  roles:
    - abims_sbr.sequenceserver

Lizenz

MIT Lizenz

Autor-Informationen

Diese Rolle wurde 2020 von Loraine Brillet-Guéguen erstellt.

Über das Projekt

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.

Installieren
ansible-galaxy install abims_sbr.sequenceserver
GitHub Repository
Lizenz
mit
Downloads
3.6k