osc.open_ondemand

Rola Ansible dla Open OnDemand

Testy Molecule

Ta rola Ansible instaluję i konfiguruje Open OnDemand na różnych dystrybucjach systemu Linux.

Spis treści

Kompatybilność wersji

Wersjonowanie tej roli będzie luźno podążać za wersjami Open OnDemand, które instaluję. Główne i pomocnicze wersje tej roli będą kompatybilne z odpowiadającymi im wersjami Open OnDemand. Poprawki w tej roli będą kompatybilne z wersją Open OnDemand, którą instaluje i konfiguruje, ale będą zawierać poprawki błędów lub nowe funkcje.

Na przykład wersja 1.8.0 tej roli będzie kompatybilna z wersjami Open OnDemand 1.8.x (aktualnie 1.8.20). Wersja 1.8.1 tej roli nadal zainstaluje wersję 1.8.20 Open OnDemand, ale wprowadzi poprawki błędów lub nowe funkcje do tej roli.

Obsługiwane systemy operacyjne

  • CentOS
  • Debian
  • Fedora
  • RedHat
  • Rocky Linux
  • Suse
  • Ubuntu 18
  • Ubuntu 20

Instalacja konkretnej wersji

Zmienna ondemand_package kontroluje wersję zainstalowanego pakietu rpm/dep. Domyślna wartość ondemand zainstaluje najnowszą wersję z odpowiedniego repozytorium, ale nie zaktualizuje istniejącej instalacji. Możesz zainstalować konkretną wersję, używając pełnej nazwy pakietu (np. ondemand-3.0.3) lub używając operatorów porównania obsługiwanych przez parametr name modułów Ansible yum lub apt. Użyj latest, aby zaktualizować istniejącą instalację.

Instalacja z najnowszej lub nocnej wersji

Jeśli chcesz zainstalować pakiet z naszych repozytoriów latest lub nightly, po prostu zmień konfigurację rpm_repo_url, aby pobrać odpowiedni RPM. Na przykład 'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'. Sprawdź yum pod kątem poprawnej wersji tego RPM.

Podczas instalacji pakietów z najnowszej lub nocnej wersji może być konieczne wykluczenie niektórych pakietów w zależności od stanu projektu. Na przykład, gdy opracowujemy wersję 2.1, pakiety 2.0 w najnowszej lub nocnej wersji należy wykluczyć.

Użyj ondemand_package_excludes, aby określić listę pakietów do wykluczenia podczas instalacji yum. Oto przykład wykluczający wszystkie pakiety 2.1 podczas instalacji 2.0.20.

ondemand_package: 'ondemand-2.0.20'
ondemand_package_excludes:
  - '*-2.1'

Tagi

Ta rola ma następujące tagi, gdy chcesz uruchomić tylko określone zadania.

  • configure - skonfiguruje Open OnDemand i wszelkie aplikacje
  • install - zainstaluje Open OnDemand i wszelkie aplikacje
  • deps - zainstaluje zależności (ważne tylko podczas budowania ze źródła)
  • build - zbuduje kod źródłowy (ważne tylko podczas budowania ze źródła)

Właściwości

Folder domyślny zawiera konfiguracje podzielone według tego, do którego pliku się odnoszą przy konfigurowaniu lub opcjach podczas budowania ze źródła lub instalacji.

Sprawdź te pliki pod kątem zmiennych, które możesz nadpisać. Zapisz wszystkie te nadpisania do pliku, który możesz następnie wywołać za pomocą [email protected]

Wszystkie pliki domyślne są pogrupowane według tego, do czego się odnoszą. Niektóre pliki mają jedynie charakter dokumentacyjny i zawierają tylko komentarze. Są ukryte dla zgodności z ansible 2.9.X oraz ten błąd ładowania pustych plików.

  • .apps.yml - konfiguracje do instalacji aplikacji (ukryty, ponieważ jest pusty).
  • build.yml - konfiguracje do budowania OnDemand ze źródła.
  • install.yml - konfiguracje do instalacji OnDemand.
  • nginx_stage.yml - konfiguracje, które dotyczą /etc/ood/config/nginx_stage.yml
  • .ondemand.yml - konfiguracje, które dotyczą /etc/ood/config/ondemand.d/ondemand.yml (ukryty, ponieważ jest pusty).
  • ood_portal.yml - konfiguracje, które dotyczą /etc/ood/config/ood_portal.yml

Używanie tej roli do zarządzania klastrami i aplikacjami

Istnieje kilka zmiennych w tej roli, które umożliwiają dostosowanie i konfigurację Open OnDemand.

klastry

Ta konfiguracja zapisuje zawartość do /etc/ood/config/clusters.d/<cluster_key>.yml dla każdego elementu klastra w tym słowniku. Każdy element słownika jest wielowierszowym ciągiem.

Na przykład

klastry:
  my_cluster: |
    ---
    v2:
      metadata:
        title: my_cluster
      login:
        host: my_host
      job:
        adapter: slurm
        bin: /usr/local
      batch_connect:
        basic:
          script_wrapper: "module restore\n%s"
  another_cluster: |
    ---
    v2:
      metadata:
        title: Another Cluster

Wygeneruje /etc/ood/config/clusters.d/my_cluster.yml oraz /etc/ood/config/clusters.d/another_cluster.yml z dokładną zawartością.

my_cluster.yml
v2:
  metadata:
    title: my_cluster
  ...
another_cluster.yml
v2:
  metadata:
    title: Another Cluster

Więcej szczegółów można znaleźć w dokumentacji Open OnDemand i Cluster Config Schema v2.

ood_install_apps

Ta konfiguracja instaluje aplikacje z niestandardowych repozytoriów do katalogu aplikacji (domyślny lub niestandardowy). Akceptuje słownik w stylu modułu git. Głównym kluczem jest nazwa rezultatu katalogu, pod którą repozytorium jest klonowane do katalogu dest.

Tylko repo: jest wymagane.

przykład ood_install_apps
ood_install_apps:
  jupyter:
    repo: https://github.com/OSC/bc_example_jupyter.git
    dest: "{{ ood_sys_app_dir }}"  # domyślnie (opcjonalnie)
    version: master                # domyślnie (opcjonalnie)
  customdir: # utworzy /var/www/ood/apps/my/dir/customdir
    repo: https://github.com/OSC/bc_example_rstudio
    dest: /var/www/ood/apps/my/dir
    version: v1.0.1

Powyższy przykład spowoduje

  • sklonowanie OSC/bc_example_jupyter do /var/www/ood/apps/sys/jupyter
  • sklonowanie OSC/bc_example_rstudio do /var/www/ood/apps/my/dir/customdir

ood_apps

Pozwala to na skonfigurowanie aplikacji bc_desktop i zapisanie plików środowiskowych dla innych aplikacji.

W najprostszym przypadku, gdy podany jest klucz env, zapisuje pary klucz-wartość w pliku env.

W bardziej skomplikowanym przypadku bc_desktop, zapisuje jego zawartość do pliku <cluster>.yml (gdzie nazwa pliku to atrybut cluster zawartości) i zapisuje zawartość klucza submit do pliku submit.yml.erb.

Poniższe przykłady powinny ilustrować te dwa punkty.

przykład ood_apps
ood_apps:
  bc_desktop:
    title: "xfce desktop"
    cluster: "my_cluster"
    form:
      - desktop
      - hours
    attributes:
      hours:
        value: 1
      desktop: "xfce"
    submit: |
      ---
      script:
        native:
          - "-t"
          - "<%= '%02d:00:00' % hours %>"
  files:
    env:
      ood_shell: /bin/bash

Powyższy przykład stworzy

/etc/ood/config
└── apps
    ├── bc_desktop
    │   ├── my_cluster.yml
    │   └── submit
    │       └── submit.yml.erb
    └── files
        └── env

env produkuje plik key=value. Zauważ wielkie litery kluczy.

$ cat /etc/ood/config/apps/files/env
OOD_SHELL=/bin/bash

submit tworzy katalog submit z plikiem submit.yml.erb, zawierającym surowe dane konfiguracyjne, które ustawiłeś. Zauważ, że konfiguracja jest surowymi danymi, a nie yaml, jak inne konfiguracje. Jest to potrzebne do wspierania Ruby ERB templating, które nie jest łatwe do sformatowania, gdy jest odczytywane przez Ansible jako yaml.

$ cat /etc/ood/config/apps/bc_desktop/submit/submit.yml.erb
---
script:
  native:
    - "-t"
    - "<%= '%02d:00:00' % hours %>"

$ cat /etc/ood/config/apps/bc_desktop/submit/my_cluster.yml
title: "remote desktop"
cluster: my_cluster
attributes:
  hours:
    value: 1
  desktop: "xfce"

Open Id Connect

Jeśli chcesz skonfigurować Apache dla mod_auth_openidc,

Pierwsza i najprostsza metoda polega na użyciu słownika ood_auth_openidc, aby wygenerować osobny plik konfiguracyjny dla konfiguracji związanych z OIDC.

Drugą metodą jest pozwolenie generowaniu ood-portal-generator na zapisanie konfiguracji OIDC bezpośrednio do pliku ood-portal.conf poprzez użycie nazwanych zmiennych oidc_*, takich jak oidc_provider_metadata_url i oidc_client_id. Możesz zobaczyć domyślne wartości oidc, aby zobaczyć pełną listę. Jeśli używasz szablonu ansible do generowania ood-portal.conf, to będziesz potrzebować dodatkowego flaga oidc_settings_samefile ustawiona na true.

przykład ood_auth_openidc

ood_auth_openidc:
  OIDCSessionMaxDuration: 28888
  OIDCClientID: myid
  OIDCProviderMetadataURL: https://localhost/
  OIDCCryptoPassphrase: mycryptopass
  "LDAPTrustedGlobalCert CA_BASE64": /etc/ssl/my/cert/path

default_auth_openidc:
  OIDCRedirectURI: "https://{{ servername }}{{ oidc_uri }}"
  OIDCSessionInactivityTimeout: 28800
  OIDCSessionMaxDuration: 28800
  OIDCRemoteUserClaim: preferred_username
  OIDCPassClaimsAs: environment
  OIDCStripCookies: mod_auth_openidc_session mod_auth_openidc_session_chunks mod_auth_openidc_session_0 mod_auth_openidc_session_1

Tworzy to plik auth_openidc.conf z wymienionymi klucz wartość połączonymi z domyślnymi wartościami. Wartości zdefiniowane w ood_auth_openidc nadpisują jakiekolwiek wartości default_auth_openidc.

Zobacz auth_openidc po więcej informacji na temat tego modułu.

Instalacja Dex

Aby zainstalować dex dla OIDC, ustaw flagę install_ondemand_dex na true, a pakiet zostanie zainstalowany.

Wkład

Jeśli napotkasz jakiś problem lub masz pomysł na nową funkcjonalność, daj nam znać! PRy są mile widziane! Nawet jeśli masz tylko pytanie, nie wahaj się otworzyć zgłoszenia.

O projekcie

Installs and configures Open OnDemand on various Linux distributions.

Zainstaluj
ansible-galaxy install osc.open_ondemand
Licencja
mit
Pobrania
2.7k
Właściciel
The Ohio Supercomputer Center located in Columbus, Ohio in the USA.