open_ondemand

Ansible Роль Open OnDemand

Molecule Tests

Эта Ansible роль устанавливает и настраивает Open OnDemand на различных дистрибутивах Linux.

Содержание

Совместимость версий

Версии этой роли будут в основном соответствовать версиям Open OnDemand, которые она устанавливает. Главные и минорные версии этой роли будут совместимы с соответствующими главными и минорными версиями Open OnDemand. Релизы патчей в этой роли будут совместимы с установленной и настраиваемой версией Open OnDemand, но будут предоставлять исправления ошибок или новые функции.

Например, версия 1.8.0 этой роли будет совместима с версиями Open OnDemand 1.8.x (в настоящее время это 1.8.20). Версия 1.8.1 этой роли все равно установит версию 1.8.20 Open OnDemand, но предоставит некоторые исправления ошибок или новые функции для этой роли.

Поддерживаемые операционные системы

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

Установка конкретной версии

Переменная ondemand_package управляет версией устанавливаемого rpm/dep пакета. Значение по умолчанию ondemand установит последнюю версию из соответствующего репозитория, но не обновит существующую установку. Вы можете установить конкретную версию, используя полное имя пакета (например, ondemand-3.0.3), или воспользоваться операторами сравнения, поддерживаемыми параметром name в модулях ansible yum или apt. Используйте latest для обновления существующей установки.

Установка из последней или ночной версии

Если вы хотите установить пакет из наших репозиториев latest или nightly, просто измените конфигурацию rpm_repo_url, чтобы загрузить соответствующий RPM. Например, 'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'. Проверьте yum для корректной версии этого RPM.

При установке пакетов из latest или nightly вам может понадобиться исключить пакеты в зависимости от состояния проекта. Например, при разработке версии 2.1 необходимо исключить пакеты 2.0 из latest или nightly.

Используйте ondemand_package_excludes, чтобы указать список пакетов, которые нужно исключить во время установки yum. Вот пример исключения всех пакетов 2.1 при установке 2.0.20.

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

Теги

Эта роль имеет следующие теги, когда вы хотите запустить только определенные задачи.

  • configure - настроит Open OnDemand и все приложения
  • install - установит Open OnDemand и все приложения
  • deps - установит зависимости (действительно только при сборке из исходников)
  • build - соберет исходный код (действительно только при сборке из исходников)

Перекрытия

Директория по умолчанию содержит конфигурации, разбитые по файлам, к которым они относятся при настройке или параметрах при сборке из исходников или установке.

Проверьте эти файлы на предмет переменных, которые вы можете переопределить. Сохраните все эти перекрытия в файл, который потом можно будет вызвать с [email protected]

Все файлы по умолчанию сгруппированы по тому, к чему они применяются. Некоторые файлы служат только для документации и содержат только комментарии. Они скрыты для совместимости с ansible 2.9.X и этой ошибкой загрузки пустых файлов.

  • .apps.yml - конфигурации для установки приложений (скрыт, так как пустой).
  • build.yml - конфигурации для сборки OnDemand из исходников.
  • install.yml - конфигурации для установки OnDemand.
  • nginx_stage.yml - конфигурации, которые относятся к /etc/ood/config/nginx_stage.yml
  • .ondemand.yml - конфигурации, которые относятся к /etc/ood/config/ondemand.d/ondemand.yml (скрыт, так как пустой).
  • ood_portal.yml - конфигурации, которые относятся к /etc/ood/config/ood_portal.yml

Использование этой роли для управления кластерами и приложениями

В этой роли есть несколько переменных, которые позволяют настраивать Open OnDemand.

кластеры

Эта конфигурация записывает свое содержимое в /etc/ood/config/clusters.d/<cluster_key>.yml для каждого элемента кластера в этом словаре. Каждый элемент словаря является многострочной строкой.

Например

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

Будет создано /etc/ood/config/clusters.d/my_cluster.yml и /etc/ood/config/clusters.d/another_cluster.yml с точно таким же содержимым.

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

Более подробную информацию можно найти в документации Open OnDemand и Cluster Config Schema v2.

ood_install_apps

Эта конфигурация устанавливает приложения из пользовательских репозиториев в директорию приложений (по умолчанию или пользовательскую). Она принимает словарь, как в модуле git. Главный ключ — это имя результирующей директории, куда будет склонирован repo под директорию dest.

Только repo: обязательна.

пример ood_install_apps
ood_install_apps:
  jupyter:
    repo: https://github.com/OSC/bc_example_jupyter.git
    dest: "{{ ood_sys_app_dir }}"  # по умолчанию (необязательно)
    version: master                # по умолчанию (необязательно)
  customdir: # создаст /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

Приведенный выше пример выполнит

  • склонирует OSC/bc_example_jupyter в /var/www/ood/apps/sys/jupyter
  • склонирует OSC/bc_example_rstudio в /var/www/ood/apps/my/dir/customdir

ood_apps

Это позволяет вам настроить приложение bc_desktop и записать файлы окружения для других приложений.

В самом простом случае, когда задан ключ env, он запишет пары ключ-значение в файл окружения.

В более сложном случае с bc_desktop, он запишет свое содержимое в файл <cluster>.yml (где имя файла — это атрибут cluster содержимого) а также запишет содержимое ключа submit в файл submit.yml.erb.

Следующие примеры должны проиллюстрировать эти два момента.

пример 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

Приведенный выше пример создаст

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

env создаст файл key=value. Обратите внимание на регистры ключей.

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

submit создаст каталог submit с файлом submit.yml.erb, содержащим сырые данные, которые вы настроили. Обратите внимание, что конфигурация — это сырые данные, а не yaml, как и другие конфигурации. Это сделано для поддержки Ruby ERB темплейтинга, который не легко форматируется при чтении ansible как 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

Существует два способа настроить Apache для mod_auth_openidc

Первый и самый простой — использовать словарь ood_auth_openidc, чтобы сгенерировать отдельный конфигурационный файл для конфигураций, связанных с OIDC.

Второй способ — позволить ood-portal-generator записать конфигурации OIDC напрямую в файл ood-portal.conf, используя именованные переменные oidc_*, такие как oidc_provider_metadata_url и oidc_client_id. Вы можете просмотреть значения по умолчанию для oidc, чтобы увидеть полный список доступных переменных. Если вы используете ansible шаблон для генерации файла ood-portal.conf, тогда вам нужен дополнительный флаг oidc_settings_samefile, установленный в true.

пример 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

Это создаст файл auth_openidc.conf с перечисленными key value, объединенными с значениями по умолчанию. Значения, определенные в ood_auth_openidc, перезаписывают любые значения из default_auth_openidc.

Смотрите auth_openidc для получения дополнительной информации об этом модуле.

Установка Dex

Чтобы установить dex для OIDC, установите флаг install_ondemand_dex в true, и он установит пакет.

Участие

Если вы столкнулись с проблемой, у вас есть запрос на функцию или вы исправили какую-то ошибку, дайте нам знать! PRы приветствуются! Даже если у вас есть просто вопрос, не стесняйтесь открывать билет.

О проекте

Installs and configures Open OnDemand on various Linux distributions.

Установить
ansible-galaxy install OSC/ood-ansible
Лицензия
mit
Загрузки
2198
Владелец
The Ohio Supercomputer Center located in Columbus, Ohio in the USA.