osc.open_ondemand

Open OnDemand Ansibleロール

Molecule Tests

このAnsibleロールは、さまざまなLinuxディストリビューションにOpen OnDemandをインストールおよび設定します。

目次

バージョン互換性

このロールのバージョンは、インストールするOpen OnDemandのバージョンに緩やかに従います。このロールのメジャーおよびマイナーバージョンは、対応するOpen OnDemandのバージョンと互換性があります。このロールのパッチリリースは、インストールおよび設定するOpen OnDemandのバージョンと互換性がありますが、バグ修正や新機能の提供を行います。

たとえば、このロールの1.8.0はOpen OnDemandの1.8.xのバージョン(現在は1.8.20)と互換性があります。このロールの1.8.1は、Open OnDemandのバージョン1.8.20をインストールしますが、このロールにバグ修正や新機能を提供します。

対応するオペレーティングシステム

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

特定のバージョンをインストールする

ondemand_package変数は、インストールされるrpm/depパッケージのバージョンを制御します。デフォルトの値ondemandは、関連するリポジトリから最新のバージョンをインストールしますが、既存のインストールをアップグレードすることはありません。特定のバージョンをインストールするには、完全なパッケージ名(例:ondemand-3.0.3)を使用するか、Ansibleのyumaptモジュールのnameパラメータがサポートする比較演算子を使用します。既存のインストールをアップグレードするにはlatestを使用します。

最新版またはナイトリービルドからインストールする

latestまたはnightlyリポジトリからパッケージをインストールする場合は、rpm_repo_url構成を変更して適切なRPMをダウンロードします。たとえば、'https://yum.osc.edu/ondemand/latest/ondemand-release-web-latest-1-6.noarch.rpm'に変更します。yumでこのRPMの正しいバージョンを確認してください。

最新またはナイトリービルドからパッケージをインストールする際には、プロジェクトの状態によってはパッケージを除外する必要がある場合があります。たとえば、2.1の開発中には、最新またはナイトリービルドの間に2.0のRPMのパッケージを除外する必要があります。

ondemand_package_excludesを使用して、yumインストール中に除外するパッケージのリストを指定します。以下は、2.0.20をインストールする際にすべての2.1パッケージを除外する例です。

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のカスタマイズや設定を可能にするいくつかの変数があります。

clusters

この設定は、各クラスタ項目に対して/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

この設定は、カスタムリポジトリからアプリケーションをappsディレクトリ(デフォルトまたはカスタム)にインストールします。これは、gitモジュールと同様の辞書を受け入れます。主要なキーは、destディレクトリの下にrepoがクローンされる結果のディレクトリ名です。

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デスクトップ"
    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

envkey=valueファイルを生成します。キーの大文字と小文字に注意してください。

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

submitは_submit_ディレクトリを作成し、submit.yml.erbに設定した生の文字列データを含みます。この設定は生データであり、他の設定のようにyaml形式ではありません。これは、Ansibleがyamlとして簡単にフォーマットできないRuby ERBテンプレートをサポートするためです。

$ 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: "リモートデスクトップ"
cluster: my_cluster
attributes:
  hours:
    value: 1
  desktop: "xfce"

Open ID Connect

Apacheをmod_auth_openidc用に構成する2つの方法があります。

最初の簡単な方法は、ood_auth_openidc辞書を使用してOIDC関連の設定のための別の構成ファイルを生成することです。

2つ目は、ood-portal-generatorを使用してOIDC設定をood-portal.confファイルに直接書き込むことで、oidc_*変数(たとえば、oidc_provider_metadata_urloidc_client_id)を使用します。利用可能な完全なリストを見るにはOIDCのデフォルトを参照してください。ood-portal.confを生成するためにAnsibleテンプレートを使用している場合、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

これは、リストされたkey valueをデフォルト値とマージしたauth_openidc.confファイルを生成します。 ood_auth_openidcで定義された値は、default_auth_openidcの値を上書きします。

このモジュールに関する詳細はauth_openidcを参照してください。

Dexをインストールする

OIDC用にdexをインストールするには、フラグinstall_ondemand_dexをtrueに設定します。これによりパッケージがインストールされます。

寄付

問題に直面したり、機能リクエストがあったり、問題を修正した場合は、お知らせください!PRを歓迎します!質問がある場合も、自由にチケットを開いてください。

プロジェクトについて

Installs and configures Open OnDemand on various Linux distributions.

インストール
ansible-galaxy install osc.open_ondemand
ライセンス
mit
ダウンロード
2.7k
所有者
The Ohio Supercomputer Center located in Columbus, Ohio in the USA.