osc.open_ondemand

Rôle Ansible Open OnDemand

Tests Molecule

Ce rôle Ansible installe et configure Open OnDemand sur diverses distributions Linux.

Table des matières

Compatibilité des versions

La version de ce rôle suivra approximativement les versions d'Open OnDemand qu'il installe. Les versions majeures et mineures de ce rôle seront compatibles avec les versions majeures et mineures correspondantes d'Open OnDemand. Les mises à jour de ce rôle seront compatibles avec la version d'Open OnDemand qu'il installe et configure, mais elles fourniront des corrections de bogues ou de nouvelles fonctionnalités.

Par exemple, la version 1.8.0 de ce rôle sera compatible avec les versions d'Open OnDemand 1.8.x (qui est actuellement 1.8.20). La version 1.8.1 de ce rôle installera toujours la version 1.8.20 d'Open OnDemand mais offrira quelques corrections de bogues ou nouvelles fonctionnalités pour ce rôle.

Systèmes d'exploitation pris en charge

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

Installer une version spécifique

La variable ondemand_package contrôle la version du package rpm/dep installé. La valeur par défaut de ondemand installera la dernière version du dépôt concerné, mais ne mettra pas à jour une installation existante. Vous pouvez installer une version spécifique en utilisant le nom complet du package (par ex. ondemand-3.0.3) ou en utilisant les opérateurs de comparaison pris en charge par le paramètre name des modules ansible yum ou apt. Utilisez latest pour mettre à jour une installation existante.

Installation à partir de la dernière version ou de la version nocturne

Si vous souhaitez installer un package à partir de nos dépôts latest ou nightly, changez la configuration rpm_repo_url pour télécharger le RPM approprié. Par exemple 'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'. Vérifiez yum pour la version correcte de ce RPM.

Lorsque vous installez des packages à partir de la dernière version ou de la version nocturne, vous devrez peut-être exclure des packages en fonction de l'état du projet. Par exemple, lors du développement de 2.1, les RPMs 2.0 sur latest ou nightly doivent exclure des packages.

Utilisez ondemand_package_excludes pour spécifier une liste de packages à exclure lors de l'installation yum. Voici un exemple pour exclure tous les packages 2.1 lors de l'installation de 2.0.20.

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

Tags

Ce rôle a ces tags lorsque vous souhaitez exécuter uniquement certaines tâches.

  • configurer - configurera Open OnDemand et toutes les applications
  • installer - installera Open OnDemand et toutes les applications
  • deps - installer des dépendances (valable uniquement lors de la compilation à partir de la source)
  • build - compiler le code source (valable uniquement lors de la compilation à partir de la source)

Remplacements

Le répertoire des défauts a des configurations réparties selon le fichier auquel elles s'appliquent lors de la configuration ou des options lors de la compilation à partir de la source ou de l'installation.

Vérifiez ces fichiers pour les variables que vous pouvez remplacer. Enregistrez tous ces remplacements dans un fichier que vous pouvez ensuite appeler avec [email protected]

Tous les fichiers par défaut sont regroupés par ce à quoi ils s'appliquent. Certains fichiers sont à des fins documentaires et n'ont que des commentaires. Ils sont masqués pour la compatibilité ansible 2.9.X et cette erreur de chargement de fichiers vides.

  • .apps.yml - configurations pour l'installation d'applications (masqué car c'est vide).
  • build.yml - configurations pour construire OnDemand à partir de la source.
  • install.yml - configurations pour installer OnDemand.
  • nginx_stage.yml - configurations qui s'appliquent à /etc/ood/config/nginx_stage.yml
  • .ondemand.yml - configurations qui s'appliquent à /etc/ood/config/ondemand.d/ondemand.yml (masqué car c'est vide).
  • ood_portal.yml - configurations qui s'appliquent à /etc/ood/config/ood_portal.yml

Utiliser ce rôle pour gérer le cluster et les applications

Il y a quelques variables dans ce rôle qui permettent des personnalisations et des configurations d'Open OnDemand.

clusters

Cette configuration écrit son contenu dans /etc/ood/config/clusters.d/<cluster_key>.yml pour chaque élément de ce dictionnaire. Chaque élément du dictionnaire est une chaîne de plusieurs lignes.

Par exemple

clusters:
  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

Produira /etc/ood/config/clusters.d/my_cluster.yml et /etc/ood/config/clusters.d/another_cluster.yml avec le contenu exact.

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

Plus de détails peuvent être trouvés dans la documentation d'Open OnDemand et Cluster Config Schema v2.

ood_install_apps

Cette configuration installe des applications à partir de dépôts personnalisés dans le répertoire des applications (par défaut ou personnalisé). Elle accepte un dictionnaire comme ceux du module git. La clé principale est le nom du répertoire résultant où le repo est cloné sous le répertoire dest.

Seul repo: est requis.

Exemple de ood_install_apps
ood_install_apps:
  jupyter:
    repo: https://github.com/OSC/bc_example_jupyter.git
    dest: "{{ ood_sys_app_dir }}"  # valeurs par défaut (facultatif)
    version: master                # valeurs par défaut (facultatif)
  customdir: # créera /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

L'exemple ci-dessus va

  • cloner OSC/bc_example_jupyter dans /var/www/ood/apps/sys/jupyter
  • cloner OSC/bc_example_rstudio dans /var/www/ood/apps/my/dir/customdir

ood_apps

Cela vous permet de configurer l'application bc_desktop et d'écrire des fichiers d'environnement pour d'autres applications.

Dans le cas le plus simple, lorsqu'une clé env est fournie, elle écrira des paires clé-valeur dans un fichier d'environnement.

Dans le cas plus complexe de bc_desktop, elle écrit son contenu dans un fichier <cluster>.yml (où le nom de fichier est l'attribut cluster du contenu) et écrit le contenu de la clé submit dans le fichier submit.yml.erb.

Les exemples ci-dessous devraient illustrer ces deux points.

Exemple de 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

L'exemple ci-dessus créera

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

env produit un fichier key=value. Notez la capitalisation des clés.

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

submit crée un répertoire submit avec un fichier submit.yml.erb contenant les données en chaîne brute que vous avez configurées. Notez que la configuration est des données brutes et non du yaml comme les autres configurations. Cela permet de prendre en charge le modèle Ruby ERB qui n'est pas facilement formaté lorsqu'il est lu par Ansible en tant que 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

Il existe deux façons de configurer Apache pour mod_auth_openidc

La première et la plus simple consiste à utiliser le dictionnaire ood_auth_openidc pour générer un fichier de configuration distinct pour les configurations liées à OIDC.

La seconde consiste à faire en sorte que le générateur du portail ood écrive directement les configurations OIDC dans le fichier ood-portal.conf en utilisant les variables nommées oidc_* comme oidc_provider_metadata_url et oidc_client_id. Vous pouvez consulter les valeurs par défaut oidc pour voir une liste complète disponible. Si vous utilisez le modèle ansible pour générer ood-portal.conf, vous aurez besoin de l'option supplémentaire oidc_settings_samefile définie sur true.

Exemple 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

Il produit un fichier auth_openidc.conf avec les key value listés fusionnés avec les valeurs par défaut. Les valeurs définies sur ood_auth_openidc remplacent les valeurs de default_auth_openidc.

Consultez auth_openidc pour plus d'informations sur ce module.

Installer Dex

Pour installer dex pour OIDC, activez le flag install_ondemand_dex sur true et il installera le package.

Contributions

Si vous rencontrez un problème, avez une demande de fonctionnalité ou avez corrigé un problème, faites-le nous savoir ! Les PR sont les bienvenues ! Même si vous avez juste une question, sentez-vous libre d'ouvrir un ticket.

À propos du projet

Installs and configures Open OnDemand on various Linux distributions.

Installer
ansible-galaxy install osc.open_ondemand
Licence
mit
Téléchargements
2.7k
Propriétaire
The Ohio Supercomputer Center located in Columbus, Ohio in the USA.