osc.open_ondemand
Open OnDemand Ansibleロール
この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のyumやaptモジュールの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
env
はkey=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_url
やoidc_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