flagflag  
Page Top

Moodle Module for Moodle & JupyterHub Integration anchor.png

Page Top

機能(Tab) anchor.png

Page Top

Over View anchor.png

  • 表紙
  • 設定表示
     
Page Top

Lti Connections anchor.png

  • コース内にある LTI接続の一覧 -> Lti Edit へのリンク
  • 表示設定へのリンク
     
Page Top

Lti Settings anchor.png

  • Lti Connections での,表示・非表示設定
     
Page Top

Lti Edit anchor.png

  • LTI(外部サービス)インスタンスのカスタムパラメータを書き換える.
    • 通常は DB上のデータを書き換えるだけ.
    • カスタムパラメータ自体は,JupyterHubに実際に接続(ログイン)した時に送られる.
  • データを更新したタイミングで Dockerのボリュームを作成するように設定することも可能.
     
Page Top
カスタムパラメータ一覧 anchor.png
  • lms_users=
  • lms_teachers=
  • lms_image=
  • lms_defurl=
  • lms_cpulimit=
  • lms_memlimit=
  • lms_vol_表示名=
  • lms_sub_表示名=
  • lms_prs_表示名=
  • lms_sessionifo=
  • lms_iframe=
  • カスタムパラメータ名は snake_case で記述
     
Page Top
Accessible users anchor.png
  • LTIのカスタムパラメータの lms_users に対応
  • Volume セクションで記述したボリュームをマウントできるユーザを指定する.
  • ユーザはMoodleのユーザ名を,カンマ(,)または空白で区切って記述する.
  • デフォルト(空欄)では全てのユーザがボリュームをマウントできない.
  • アスタリスク(*)は全てのユーザがボリュームをマウントできることを表す.
     
Page Top
Teachers anchor.png
  • LTIカスタムパラメータの lms_teachers に対応
  • コースの教師を指定する.指定の仕方は,lms_user と同じ.* も使えるが,使う意味がない.(全員教師って何?)
  • 途中で教師のメンバを変更した場合は,Task volume および Submit volume のオーナが教師グループから外れる可能性があるので,注意が必要.
  • 教師の特権
    • Task volume に書き込みができる.
    • Submit volume にあるファイルの読み込み,コピー,削除ができる.
    • ボリュームのアクセス名の先頭に マイナス(-) を付けた場合,教師に対してのみアクセス用のリンクが張られる(-は削除されてリンクが張られる)
      • 学生にリンクによるアクセスをさせたくない場合に使用(セキュリティ的な意味ではなく,操作上の学生の混乱を少なくさせるためのもの)
      • Personal volume を使うときに,Task volumeにマイナス付きのリンク名を指定すると便利.と言うか,そのために作った.
         
Page Top
Container image anchor.png
  • LTIのカスタムパラメータの lms_image に対応
  • 起動するコンテイメージを指定する.デフォルトの場合は,設定ファイルで指定したイメージ.
  • Jupyter Lab/Notebook 以外のイメージを選択した場合は,漏れなくシステムが死にます.
    • じゃあ,Jupyter Lab/Notebook のイメージだけ表示すればと言われても,私の現時点でのスキルでは無理です
    • 一応イメージ名に含まれる文字列に対して,フィルターを掛けることができるようにしました.
       
Page Top
Default URL anchor.png
  • LTIのカスタムパラメータの lms_defurl に対応
  • Lab か Notebook のどちらにアクセスするかのURLを指定する.デフォルトは設定ファイルで指定したURL.
  • Lab を指定した場合は,起動するコンテイメージが Labをサポートしていないと 404 not found になる.
     
Page Top
CPU Limit anchor.png
  • lms_cpulimit に対応.
  • Docker コンテナ内での CPU数の上限
     
Page Top
Memory Limit anchor.png
  • lms_memlimit に対応.
  • Docker コンテナ内での メモリの上限
  • CPU Limit は 0.1 でも結構動くが,メモリ 120Mぐらいだと JupyterHub/singleuser のコンテナは起動しない.
    • 140M くらいだと何とかコンテナは起動するが,ほぼ使えない.
    • 180M くらいで何とか使用できるようになる.
    • mod_lticontainer では,余裕を考えてきりのいい 200M から表示.
       
Page Top
Volume セクション anchor.png
  • Task volume, Submit volume はユーザが JupyterHubにアクセスしたときに(許可があれば)マウントされる.
    • 許可ユーザの書き方は lms_user(Accessible users) と同じ.ただしデフォルト(空欄)では,全てのユーザが許可される.
    • lms_user(Accessible users)よりも,ここで指定される個々の許可ユーザの方が優先される.
    • * も使用できるが意味はない. 空欄にしておけば良いので.
    • 通常は誰かが jupyterHubにアクセスしてログインした瞬間に(ボリュームが存在しなければ)ボリュームが作成され,マウントされる.
    • マウントポイントは,ボリュームを外した場合もそのまま残るので見た目が良くない.ドット(.) ディレクトリの下に隠すと良い.
  • コースの LTIインスタンス毎にユーザに見せるディレクトリを変更できる.
  • マウントしたボリュームには,アクセス名によるシンボリックリンクでアクセス可能.
    • ボリュームの再利用に便利.
    • マウントポイントだけ存在して,実際にはマウントされてないボリュームとの識別に便利
    • マウントポイントをドット(.) ディレクトリの下に隠すことができるので,見た目もすっきり.
  • Volume のマウントコマンドをカスタムパラメータから削除するには,アクセス名の無いエントリを作成する.
    • Personal Volume については,カスタムパラメータから削除すると,存在自体を忘れてしまう可能性があるので注意(自分のディレクトリを見て確認可能)
  • 表示名の指定について
    • アルファベット小文字,及び数字のみ使用可能
    • 三種類のボリューム(vol, sub, prs)について,同じ表示名が指定できる.
  • アクセス名について
    • 漢字指定可能
    • ドット(.)を指定すると,ボリュームのフルネームでリンクが作られる.(ln -s ボリューム名 . が実行されるため)
    • アクセス名の無いエントリを作成すると,カスタムパラメータから削除される.
    • ボリュームのアクセス名の先頭に マイナス(-) を付けた場合,教師に対してのみアクセス用のリンクが張られる(-は削除されてリンクが張られる)
       
Page Top
Task volume anchor.png
  • LTIのカスタムパラメータの lms_vol_表示名=アクセス名: 許可ユーザ に対応
  • 課題提示用ボリューム.教師は書き込み可能だが,学生は読み出しのみ可能
  • Volumes タブで削除可能
  • パーミッション:rwxrwsr-x, オーナ:一番最初にアクセスした教師,グループ:教師
  • 教師 UMASK 0033, 学生 UMASK 0037
     
Page Top
Submit volume anchor.png
  • LTIのカスタムパラメータの lms_sub_表示名=アクセス名: 許可ユーザ に対応
  • 課題回収用ボリューム.教師は読み出し(書き込み,削除:これはオーナのみ)が可能だが,学生は課題の提出(書き込み)と自分の提出した課題にのみアクセス(読み出し,削除)可能
  • Volumes タブで削除可能
  • パーミッション:rwxrwsrwt,オーナ:一番最初にアクセスした教師,グループ:教師
  • 教師 UMASK 0033, 学生 UMASK 0037
     
Page Top
Personal volume anchor.png
  • LTIのカスタムパラメータの lms_prs_表示名=アクセス名: 許可ユーザ に対応
  • これはユーザの専用ボリュームに恒久的に作成されるディレクトリである.
  • ユーザ本人しかアクセスできない.(コンテナ起動時の管理プロセスを除く)
  • Task volume, Submit volume は Volumes タブで削除可能だが,これは一度作成するとシステムの管理者またはユーザ本人しか削除できない
    • このモジュールからの削除は,やってやれないこともないが,現時点ではその機能は実装されていない.
  • Task volume と同じ名前(表示名)で作成すると,コンテナ起動時に Task volume の内容がここにコピーされる.
    • 課題配布に使用するのが主な目的.
    • 取り扱いが面倒だが,上手く使えば強力.
  • 許可ユーザに名前がない場合は,ディレクトリに対して何の操作も行われない.(ディレクトリ自体は存在)
    • アクセス名からのリンクは行われない.
    • Task volume と同じ名前(表示名)にしても,コピーは行われない.
       
Page Top
その他のカスタムパラメータ anchor.png
  • lms_sessionifo : このモジュールのインスタンスIDと対応する LTIインスタンスのIDが自動的に設定される.
    • ユーザが気にすることは何もない.このデータは実際には feserver の feplg_nbwsモジュールに送られてる.
  • lms_iframe : iframeサポート.自動的に設定される.
    • ただし正常に動かすためには,jupyterhub_config.py の host_url を設定しなければならない.
    • host_url を設定しなくとも動きますが,デフォルトの host_url はセキュリティ的にちと甘いです.可能なら設定してください.
    • ホストの Python のバージョンが 3.7以下の場合は使用できない(jupyterhubのエラーになる).tornado が cookie の samesite を処理できないため.
      • jupyterhub のエラーメッセージ:http.cookies.CookieError: Invalid attribute 'samesite'
  • 現時点で(実装しているけど)使用していないカスタムパラメータ.
    • lms_options :コマンドオプション.そのうち使うかも.
  • このモジュールが使用するもの以外の カスタムパラメータには一切影響を及ぼさない.
     
Page Top

Volumes anchor.png

  • 関連する Dockerボリュームの表示名の一覧とその削除.
  • Personal volume は操作対象外.
  • 表示されるボリューム名(表示名)は,省略された名前.
  • ボリュームのフルネーム(正式名): lms_[ vol | sub | prs ]_表示名_コースID_MoodleホストのFQDN
    • 例:lms_vol_xyz_98_el.mml.tuis.ac.jp
       
Page Top

Trouble Shooting anchor.png

Page Top
Call to undefined function posix_getpwuid() anchor.png
  • php-process をインストールする
    yum -y install php-process
Page Top
The web server process does not have write access to its own home directory. Please check the permissions. anchor.png
  • Webサーバの実効ユーザのホームディレクトリを調べて,そのディレクトリを実効ユーザの持ち物にする.
    vipw /etc/passwd
    cd /usr/share/httpd/
    chown apache.apache .
     
Page Top

課題の配布と回収例 anchor.png

Page Top

lms_vol と lms_sub を使用する. anchor.png

Page Top
課題作成 anchor.png
  1. 設定
    • lms_user : 空欄
    • lms_teacher : 自分のユーザ名
    • lms_image : 課題で使用するイメージ
    • lms_vol : 適当なアクセス名,許可ユーザに自分のユーザ名
  2. JupyterHub にログイン.
  3. lms_vol 内で教材を作成.他の適当なディレクトリで作業しても良い.
  4. ipynb_deploy コマンドでファイルを変換・コピー.
    1. ipynb_deploy コマンドは,後で採点や統計作業を行い易いようにするために,ファイル内のコードセルに通し番号を付ける.
    2. lms_vol 内で作業していて,作業場所をそのまま公開する場合は,ipynb_deploy . と入力する.
    3. ipynb_deploy コマンドを実行する前に,必ずファイルのバックアップを取ること.もし ipynb_deploy の実行によりファイルが破損しても,当方は一切責任は持てません.
       
Page Top
課題公開 anchor.png
  1. 設定
    • lms_user : *
    • lms_teacher : 自分のユーザ名
    • lms_image : 課題で使用するイメージ
    • lms_vol : 課題提示用ボリューム.適当なアクセス名を指定.許可ユーザは空欄
    • lms_sub : 課題収集用ボリューム.適当なアクセス名を指定.許可ユーザは空欄.
       
Page Top
課題の実施(学生) anchor.png
  1. 学生は,lms_vol 内から,自分の作業用場所(~/jupyter または ~/jupyter/works 下など)に課題ファイルをコピー
  2. 課題を行う.
  3. 提出は,課題ファイルを指定された提出用 lms_sub ボリュームにコピーする.この際,ファイル名に自分の学籍番号,名前を追加する.
    1. ファイル提出の際には ipynb_submit コマンドが使用できる.ipynb_submi はファイル名にユーザ名を自動的に付け加えて,指定されたフォルダにコピーする.
    2. 例)ipynb_submit kadai-1.ipynb 課題1提出用 
       
Page Top

加えて lms_prs を使用する. anchor.png

Page Top
課題作成 anchor.png
  1. 設定
    • lms_user : 空欄
    • lms_teacher : 自分のユーザ名
    • lms_image : 課題で使用するイメージ
    • lms_vol : 先頭にマイナス(-)を付けたアクセス名.許可ユーザに自分のユーザ名
  2. JupyterHub にログイン.
  3. lms_vol 内で教材を作成.以前作成した教材ファイルとファイル名が被らないように注意する.他の適当なディレクトリで作業しても良い.
  4. ipynb_deploy コマンドで課題ファイルを変換・コピー.
    1. ipynb_deploy コマンドは,後で採点や統計作業を行い易いようにするために,ファイル内のコードセルに通し番号を付ける.
    2. lms_vol 内で作業していて,作業場所をそのまま公開する場合は,ipynb_deploy . と入力する.
    3. 注)ipynb_deploy コマンドを実行する前に,必ずファイルのバックアップを取ること.もし ipynb_deploy の実行によりファイルが破損しても,当方は一切責任は持てません.
       
Page Top
課題公開 anchor.png
  1. 設定
    • lms_user : *
    • lms_teacher : 自分のユーザ名
    • lms_image : 課題で使用するイメージ
    • lms_vol : 先頭にマイナス(-)を付けたアクセス名,許可ユーザは空欄.学生にはリンク名は表示されない.
    • lms_prs : 表示名はlms_vol と同じにする.アクセス名は適当な名前.許可ユーザは空欄.
    • lms_sub : 課題収集用ボリューム.適当なアクセス名.許可ユーザは空欄.
       
Page Top
課題の実施(学生) anchor.png
  1. 学生は lms_prs 内にあるファイルを使って,そのまま課題を行う.
  2. 提出は,課題ファイルを指定された提出用 lms_sub ボリュームにコピーする.この際,ファイル名に自分の学籍番号,名前を追加する.
    1. ファイル提出の際には ipynb_submit コマンドが使用できる.ipynb_submi はファイル名にユーザ名を自動的に付け加えて,指定されたフォルダにコピーする.
    2. 例)ipynb_submit kadai-1.ipynb 課題1提出用 
  • 強制的に教師側で課題を回収する方法も検討中.
     
Page Top

オプション anchor.png

Page Top

Moodle anchor.png

Page Top
XML-RPC anchor.png
  • feserver の feplg_nbws モジュールからの XML-PRC を受信し,データをデータベースに格納可能.
  • オプションだから,やらなくても良い(feserver を使用しなくても良い)
     
Page Top

Install, 設定 anchor.png

Page Top

Install anchor.png

# cd {moodle_dir}/mod
# git clone https://gitlab.nsl.tuis.ac.jp/iseki/mod_lticontainer.git
# mv mod_lticontainer ltids
# chown -R apache.apache ltids
access to moodle by admin
Page Top

container_rsock.sh anchor.png

  • Docker/Podman のリモートコントロール用シェルスクリプト
  • ssh のポートフォワーディングを使って,UNIXのソケットファイルを繋げる.
  • Docker/Podman ホスト側に,sshでログイン可能な(ログイン)ユーザが必要.
     
Page Top
LMS 側について anchor.png
  • docker クライアント(/usr/bin/docker)が必要
     
Page Top
docker/podman 側のログインユーザについて anchor.png
  1. ユーザのホームディレクトリについて,ユーザが書き込み可能であること.
    1. CentOS8 で嵌った.ユーザを dockerにしたんだが,docker/podmanのホームディレクトリなのに,docker/podmanが書き込み可能でなかった.
  2. ユーザが docker/podman のグループに属していること(UNIXソケットファイルにアクセスするため).
  3. ユーザのログインシェルは不要
 
Page Top

ipynb_deploy anchor.png

  • ipynb ファイル内のコードセルに通し番号を付ける.
  • 学習記録分析などの,後処理用
     
Page Top

System anchor.png


Front page   Freeze Diff Backup Copy Rename Reload   New List of Pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 437, today: 2, yesterday: 0
Last-modified: 2022-07-05 (Tue) 11:43:15 (JST) (671d) by iseki

Site Search

Login

Username:

Password:


Lost Password?
Register now!!

Sub Menu

mini Calendar

Last MonthMay 2024Next Month
Su Mo Tu We Th Fr Sa
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today

Who's Online

86 user(s) are online (13 user(s) are browsing xpwiki)

Members: 0
Guests: 86

more...

Access Counter

Today : 4329432943294329
Yesterday : 1631416314163141631416314
Total : 2351710423517104235171042351710423517104235171042351710423517104
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com