犬でも分かるOpen OnDemand(2):Open OnDemandのインストール

Open OnDemand Open OnDemand
Open OnDemand

今、人気上昇中のOpen OnDemandを、おうちのサーバ(仮想マシン)にインストールしてみることにしました。

インストール環境

Open OnDemandをインストールする環境についてですが、ホストサーバはうちにあるミニPC MINISFORUM GK41 です。

ホストサーバのspecがショボいので、Open OnDemandをインストールする仮想マシン ood0 は、以下の通りリソースをケチっています。まあ、お試しだから良いよね。。

・仮想マシン(VM)のリソース: vcpus=1, ram=2048MB, disk=20GB
・OS: Rocky 8.9
・ホスト名とIPアドレス: ood0, 192.168.1.204

※いずれジョブ投入も実現したいので、もうひとつ 仮想マシン ood1 を作成する計画です。

インストールするパッケージについては、OSインストール時は最小限のインストール(minimal-environment)を指定した後は、パッケージグループ Development Tools と パッケージ nfs-utils をインストールしました。NFSはOpen OnDemandとは関係ないのですけど、ユーザのホームディレクトリはNFSサーバ上に作成して、クラスタ構築後はNFSマウントして利用したいのでNFSクライアントをインストールすることにしました。

ちなみに、SELinuxとfirewallは邪魔になるので無効化しておいて下さい。

パッケージのインストール

仮想マシン ood0 にOpen OnDemandをインストールします。
Open OnDemandの Install Software From RPM のページにインストール方法が書いてあるので参考にすると良いでしょう。

httpサーバのインストール

本家サイトによると、前提となるhttpサーバに Apache 2.4が指定されています。Rocky 8.9に含まれるhttpdパッケージは Apache 2.4.37 なので、dnfコマンドでそのままインストールしましょう。

# dnf -y install httpd

mod_authnz_pam はOSのアカウントでApacheのBasic認証を行うためのモジュールです。

依存パッケージをインストール

# dnf -y config-manager –set-enabled powertools
# dnf -y install epel-release
# dnf -y module enable ruby:3.1 nodejs:18

Open OnDemandのレポジトリを追加してOpen OnDemandをインストール

# dnf -y install https://yum.osc.edu/ondemand/3.1/ondemand-release-web-3.1-1.el8.noarch.rpm
# dnf -y install ondemand

今回インストールしたOpen OnDemandは 3.1.1でした。

httpサーバ関連の設定

DNSサーバへの登録

※この設定はOpen OnDemandの利用に必須ではないので、設定しない人は読みとばして下さい。

今回インストールするOpen OnDemandをFQDNでアクセスしたい! と思い、お家にあるルーターでDNSサーバを運用して、Open OnDemandサーバのIPアドレス 192.168.1.204 を以下のFQDNで登録することにしました。
ood0.home.local
インターネットプロバイダが提供するルーターでDNSを運用する方法は、この記事を参考にして下さい。

ServerNameの定義

さて、上記のFQDNでhttpサーバにアクセスするのであれば、Apacheの設定ファイル
/etc/httpd/conf/httpd.conf
の ServerName 行を以下の通り定義します。

ServerName ood0.home.local:80

FQDNを使用せず、IPアドレス 192.168.1.204 でアクセスするのであれば、ServerName行を以下の通り定義します。

ServerName 192.168.1.204:80

https設定(SSL化)

※この設定はOpen OnDemandの利用に必須ではないので、設定しない人は読みとばして下さい。

もし仕事でOpen OnDemandを本番利用するのであれば、暗号化(SSL化)通信は必須となるので、今回設定をすることにしました。ApacheをSSL化するための手順を書くと長くなるので、別の記事で解説しているのでこちらをご参照ください。

認証設定

Open OnDemandの Authentication のページを見ると様々な認証に対応していることが分かりますが、今回は最も簡単な PAM Authentication を選ぶことにします。

mod_authnz_pamモジュールのインストールと設定

Apacheのmod_authnz_pam モジュールを以下の通りインストールします。
mod_authnz_pamは、ApacheのBasic認証をOSのアカウントで認証してくれるという便利なものです。

# dnf -y install mod_authnz_pam

/etc/httpd/conf.modules.d/55-authnz_pam.conf で以下の行のコメントを外し、mod_authnz_pam.soの組み込みを有効にします。

LoadModule authnz_pam_module modules/mod_authnz_pam.so

次に以下の通りsshでログインする際のPAM制御の定義をコピーして、Open OnDemandのログインにも適用することにします。

# cp /etc/pam.d/sshd /etc/pam.d/ood

このモジュールは /etc/shadow を読み込むことになるので、以下のように /etc/shadow をグループapacheの権限で読み込み可能な設定とします。この点において、ちょっとセキュリティレベルがダウンするのは課題かもしれません。

# chmod 640 /etc/shadow
# chgrp apache /etc/shadow

Open OnDemand の認証設定

PAM Authenticationの場合、/etc/ood/config/ood_portal.ymlに下記を追記する、とOpen OnDemandのAuthenticationのページに書いてあるけれど….

auth:
- 'AuthType Basic'

- 'AuthName "Open OnDemand"'
- 'AuthBasicProvider PAM'
- 'AuthPAMService ood'
- 'Require valid-user'
# Capture system user name from authenticated user name
user_map_cmd: "/opt/ood/ood_auth_map/bin/ood_auth_map.regex"

/opt/ood/ood_auth_map/bin/ood_auth_map.regex” doesn’t exist というHelp記事があるように、このファイル存在しません。2.0から削除された、と書いてあります。2.0からは user_map_match がサポートされて、user_map_cmd は古いみたいです。
この設定では、Open OnDemandにログインしたユーザ名からOSのユーザ名を獲得するための手段を定義しています。user_map_matchに関するマニュアルページを見ると、デフォルトは「user_map_match: ‘.*’」となっていて、Open OnDemandにログインしたユーザ名と、0文字以上の文字列にマッチするものをOSのユーザ名とする(すなわち、Open OnDemandのユーザ名=OSのユーザ名)という仕様らしいので、結局、user_map_cmd行は記述せず、今回は以下だけを定義することにします。

auth:
- 'AuthType Basic'

- 'AuthName "Open OnDemand"'
- 'AuthBasicProvider PAM'
- 'AuthPAMService ood'
- 'Require valid-user'

ood_portal.ymlの定義とApache設定ファイルの自動生成

/etc/ood/config/ood_portal.yml の定義

Open OnDemandの設定ファイルは /etc/ood/config/ood_portal.yml です。これがApacheの設定ファイルを生成する元ネタとなります。必要な設定を YAML の形式で定義します。

まずは、servername を定義します。今回の例では、ood0.home.local です。DNSに定義していないのであれば、FQDNの代わりにIPアドレスを定義しましょう。

servername: ood0.home.local

次に、サーバ証明書と秘密鍵のパスを定義しましょう。ApacheをSSL化しないで運用するのであれば、この定義は不要です。

ssl:
– ‘SSLCertificateFile “/etc/pki/tls/certs/server.crt”‘
– ‘SSLCertificateKeyFile “/etc/pki/tls/private/server.key”‘

Apacheの設定ファイルを自動生成

update_ood_portal コマンドでApacheの設定ファイルを自動生成します。

# /opt/ood/ood-portal-generator/sbin/update_ood_portal
Backing up previous Apache config to: '/etc/httpd/conf.d/ood-portal.conf.20240504T095136'
Generating new Apache config at: '/etc/httpd/conf.d/ood-portal.conf'
chown root:apache /etc/httpd/conf.d/ood-portal.conf
chmod 640 /etc/httpd/conf.d/ood-portal.conf
Generating Apache config checksum file: '/etc/ood/config/ood_portal.sha256sum'
Completed successfully!

Apacheの再起動

Apache関連の設定ファイルを修正したので、以下の通りApacheを再起動して下さい。

# systemctl restart httpd

もし、SSL化を行ったのであれば、再起動のときに秘密鍵を作成したときのパスワードの入力が求められるので入力して下さい。

構築したOpen OnDemandにアクセスする

Webブラウザから以下のURLにアクセスします。

https://ood0.home.local

すると、Open OnDemandのログイン画面が表示されます。

Open OnDemandのログイン画面

OSに登録されているユーザ名とパスワードを入力して「ログイン」をクリックします。
ログインに成功すると、以下の初期画面が表示されます。

Open OnDemandのログイン後の画面

「Files」メニューから「Home Directory」を選択すると、、

Files-Home Directoryメニュー

ログインしたユーザ(testu1)のホームディレクトリ(/home/share/testu1)の一覧が表示されます。

ホームディレクトリの一覧

ログインしたユーザ testu1 のホームディレクトリ /home/share/testu1 の配下を実際に覗いてみると、ondemandというディレクトリが作成されていることが確認できます。Open OnDemandにログインすることで自動的に作成されるデータディレクトリのようです。

Open OnDemandのインストールとログインに成功しました。
ここまでの設定で、HPCシステム上のファイルをWebブラウザから操作することが可能になりました。

広告主へのリンク




このブログにおける関連リンク

犬でも分かるOpen OnDemand シリーズ

コメント

タイトルとURLをコピーしました