12: 2021-08-02 (月) 09:58:28 iseki |
13: 2021-08-15 (日) 21:42:25 iseki |
| * Moodle & JupyterHub 連携 [#t72c88ce] | | * Moodle & JupyterHub 連携 [#t72c88ce] |
| | | |
- | ** INSTALL [#qb9768b3] | + | ** 既存システム [#yb4a054d] |
| + | |
| + | *** [[Moodle]] [#y96f887e] |
| + | #br |
| + | *** [[Docker]] ([[CentOS8]]) [#o38fddf3] |
| + | (base) # dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
| + | (base) # dnf -y install docker-ce docker-ce-cli containerd.io --nobest --allowerasing |
| + | (base) # systemctrl enable docker |
| + | (base) # systemctrl start docker |
| + | (base) # docker pull jupyterhub/singleuser |
| + | (base) # docker pull jupyter/datascience-notebook |
| + | #br |
| | | |
| *** [[Anaconda]] [#jb987bc7] | | *** [[Anaconda]] [#jb987bc7] |
| (jupyterhub) # conda install jupyter_client -y | | (jupyterhub) # conda install jupyter_client -y |
| (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/dockerspawner.git | | (jupyterhub) # pip --no-cache-dir install git+https://github.com/jupyterhub/dockerspawner.git |
- | #br | + | - 作業ディレクトリ |
| + | -- mkdir -p /var/lib/jupyterhub/ |
| + | - FireWall |
| + | -- firewall-cmd --add-port 8000/tcp --permanent |
| + | -- firewall-cmd --reload |
| | | |
- | *** [[Docker]] ([[CentOS8]]) [#o38fddf3] | + | - vi jupyterhub_config.py |
- | (base) # dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | + | -- IPアドレス,サーバ証明書,Dockerイメージの選択 |
- | (base) # dnf -y install docker-ce docker-ce-cli containerd.io --nobest --allowerasing | + | - 起動 |
- | (base) # systemctrl enable docker | + | -- conda activate jupyterhub |
- | (base) # systemctrl start docker | + | -- jupyterhub -f jupyterhub_config.py |
- | (base) # docker pull jupyterhub/singleuser | + | |
- | (base) # docker pull jupyter/datascience-notebook | + | |
| #br | | #br |
| | | |
- | **** Docker と Moodleが同じマシンで動いている場合 [#bca29c05] | + | ** 少し特殊なシステム [#e4866905] |
- | - Moodle がローカルなら,Moodleの実効ユーザを docker グループに入れればOK | + | *** [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] [#m07110de] |
- | #br | + | - JupyterHub の DockerSpawner を継承. |
| + | -- システムのユーザを使用可能. |
| + | -- システムのユーザのホーム領域をマウント可能. |
| | | |
- | **** Docker と Moodleが違うマシンで動いている場合 [#v044d897] | + | - 2021 7/12 版(それ以降)推奨 |
- | - リモートとローカルの unix ソケットファイルを ssh でつなぐ. | + | - https://github.com/jupyterhub/dockerspawner/blob/master/dockerspawner/systemuserspawner.py |
- | -- Docker の動いているマシンで,グループ docker に属するユーザを作成(例えば docker). | + | - DockerSpawner のインストールで,一緒にインストールされる.(バージョンが古い場合は手動インストール) |
- | --- パスワードを設定しておく.起動シェルは要らない. | + | |
- | ---- # adduser docker -u 105 -g docker -d /var/lib/docker -s /sbin/nologin | + | |
- | ---- # asswd docker | + | |
- | -- Moodle の動いているマシンで以下のコマンドを実行.Moodle | + | |
- | --- ssh -fNL /var/run/mdlds.sock:/var/run/docker.sock docker@202.26.150.55 | + | |
- | --- chgrp apache /var/run/mdlds.sock | + | |
- | --- chmod g+rw /var/run/mdlds.sock | + | |
- | --- コマンド実行時は ''DOCKER_HOST=unix:///var/run/xxx.sock'' または ''docker -H unix:///var/run/mdlds.sock ps'' | + | |
- | --- [[docker_rsock.sh>Docker/docker_rsock.sh]] | + | |
| #br | | #br |
| | | |
- | *** [[altfiles>NSS]] [#n90bdca5] | + | **** [[altfiles>NSS]] [#n90bdca5] |
| + | - SystemUserSpawner 用の [[NSS]] を使用した システムのユーザ情報の入手方法([[LDAP]] を使用する手段もある) |
| + | - getent passwd と getent group で情報が取れるようになれば OK |
| # git clone https://github.com/aperezdc/nss-altfiles.git | | # git clone https://github.com/aperezdc/nss-altfiles.git |
| # cd nss-altfiles/ | | # cd nss-altfiles/ |
| #br | | #br |
| | | |
- | *** [[LTI>JupyterHub#m4467ad6]] [#g284e3bf] | + | **** [[LTI>JupyterHub#m4467ad6]] [#g284e3bf] |
| + | - Moodle と連携する為の 認証モジュール |
| - pip install jupyterhub-ltiauthenticator | | - pip install jupyterhub-ltiauthenticator |
| - cd ......./ltiauthenticator | | - cd ......./ltiauthenticator |
| #br | | #br |
| | | |
- | *** [[MDLDockerSpawner>JupyterHub/MDLDockerSpawner]] [#s98f7379] | + | **** cull_idle_servers.py [#n8a3f52c] |
- | - https://gitlab.nsl.tuis.ac.jp | + | |
- | #br | + | |
- | | + | |
- | **** docker image [#je2a02e3] | + | |
- | - docker build で start.sh を置き換えたイメージを作る. | + | |
- | #br | + | |
- | | + | |
- | *** cull_idle_servers.py [#n8a3f52c] | + | |
| - 接続の切れた docker コンテナを削除 | | - 接続の切れた docker コンテナを削除 |
| - [[cull_idle_servers>JupyterHub/DockerSpawner#zc9428f7]] | | - [[cull_idle_servers>JupyterHub/DockerSpawner#zc9428f7]] |
| - https://github.com/jupyterhub/jupyterhub/tree/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle | | - https://github.com/jupyterhub/jupyterhub/tree/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle |
- | - DLして /usr/local/bin にコピー | + | - wget で DLして /usr/local/bin にコピー |
| -- wget https://raw.githubusercontent.com/jupyterhub/jupyterhub/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle/cull_idle_servers.py | | -- wget https://raw.githubusercontent.com/jupyterhub/jupyterhub/a6b7e303df03865d6420f6bccdf627b39f1d0dc1/examples/cull-idle/cull_idle_servers.py |
| #br | | #br |
| | | |
- | *** JupyterHub [#h8d86a77] | + | ** 独自拡張 [#ma810a39] |
- | - mkdir -p /var/lib/jupyterhub/ | + | |
- | - FireWall | + | |
- | -- firewall-cmd --add-port 8000/tcp --permanent | + | |
- | -- firewall-cmd --add-port 9000/tcp --permanent // feserver 用 | + | |
- | -- firewall-cmd --reload | + | |
| | | |
- | - vi jupyterhub_config.py | + | *** [[MSLDockerSpawner>JupyterHub/MDLDockerSpawner]] [#k758b918] |
- | -- IPアドレス,サーバ証明書,Dockerイメージの選択 | + | - [[Moodle]] と [[JupyterHub]] の連携をとるための Spawner クラス. |
| + | - [[SystemUserSpawner>JupyterHub/SystemUserSpawner]] クラスを継承. |
| + | - 現時点(2021/08)では jupyterhub_config.py の中で実装 |
| #br | | #br |
- | ** 起動 [#hccd8a59] | + | |
| + | **** 機能 [#o44dc5d5] |
| + | - ユーザグループ機能の完全サポート |
| + | - Moodle からの LTI カスタムパラメータの受信して動作. |
| + | - start.sh による Jupyter Lab/Notebook コンテナの動作制御. |
| + | -- 教師ユーザと学生ユーザの分離. |
| + | -- ユーザ毎の Volume のマウント,及びアクセス権(教師と学生)の設定. |
| + | --- 教材の配布と収集に便利 |
| + | -- Volume への任意名でのアクセス. |
| + | -- 起動イメージのリモート選択. |
| + | -- 起動 URL(Lab/Notebook)のリモート選択. |
| + | |
| + | #br |
| + | |
| + | **** 起動 [#bdc8edbc] |
| - jupyterhub -f mdldockerspawner/jupyterhub_config.py | | - jupyterhub -f mdldockerspawner/jupyterhub_config.py |
| + | #br |
| + | |
| + | *** [[mod_mdlds]] [#hbfc4f2f] |
| + | - MDLDockerSpawner サポート用 Moodleモジュール |
| + | #br |
| + | **** 機能 [#m538ed2a] |
| + | - LTI のカスタムパラメータ管理 |
| + | - Docker(リモート)のサポート |
| + | -- Volume 管理(表示:削除) |
| + | - WebService |
| + | -- feserver (feplg_nbws.so)からのデータを xmlrpc で受信し,データベースに格納 |
| + | --データベースのデータ利用については検討中 |
| + | #br |
| + | |
| + | *** [[feserver]] [#va0d030b] |
| + | - feserver フロントエンドサーバ(TCP中継サーバ) |
| + | - MITM 的動作を行う私的試験用ツール.(一応公開もしている) |
| + | - 各種モジュールを読み込むことにより,色々な通信データの処理が可能. |
| + | - コンパイルに [[JunkBox_Lib]] が必要 |
| + | #br |
| + | |
| + | **** feplg_nbws.so モジュール [#abc6a346] |
| + | - Moodle と JupyterHub の中間に於いて,通信情報を収集して Moodle に返すためのモジュール |
| + | - JupyterHub から見ると,リバースプロキシのように見える. |
| + | - 機能 |
| + | -- WebSocket 通信の解析. |
| + | -- HTTP通信の解析. |
| + | -- Cookie の挿入. |
| + | -- Moodle への xmlrpc 通信. |
| + | |
| + | - 起動例 |
| + | -- ./fesvr -h 172.22.1.75:8000 -p 9000 -m ./feplg_nbws.so -c -s --conf ./nbsw.conf |
| #br | | #br |