Mercurial > hg > Papers > 2024 > kiyama-master
view Paper/chapter/syskan-class.tex @ 23:8c6eb24536be default tip
update
author | kiyama <e185758@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 16 Feb 2024 08:36:07 +0900 |
parents | 7619de63c978 |
children |
line wrap: on
line source
\chapter{演習科目での取り組み} システム管理活動は2022年度から継続してシステム管理に参加する学生の確保や実践的なシステムの運用,構築に関するスキルを習得する事を目的として演習科目のテーマの1つ(以下よりサーバー班とする)になった. 演習科目とは2024年度後期時点でエンジニアデザイン演習7組という科目名の授業で,「知能情報分野のより専門的な知識を習得することを目的とし、半年間を通じて、各テーマ(下記)から1つ選択し取り組む長期実験として実施される」とあり,様々なテーマの中から学生が一つ選択し履修する.\cite{syskan-class} 知能情報コースの三年次の学生を対象に前・後期で開講されており,1学年60名ほどでテーマ数が6つほどなので1テーマ当たり10名ほどの受講生がいる. サーバー班では教育研究用情報システムの管理活動を体験する. しかし現行システムは大規模で様々なサービスが稼働しており複雑である.そこでwebやネットワーク,セキュリティなどの管理活動ごとにグループを作成し,学生と指導員を割り振っての取り組みを行った. 以下にサーバー班全体での取り組みと各グループでの取り組みを示す. \section{サーバー班の取り組み} サーバー班で学生は基本的にzoomを使用した遠隔授業を通じて活動を行う. 説明や作業を行う際には教員,または学生の一人が画面共有を行い,それ以外の学生は必要に応じて作業ログを記載する形になっている. 作業ログやドキュメントは普段システム管理チームが使用しているプロジェクトに招待され,システム管理チームでのscrapboxの使い方の説明を受ける. 授業の初回では,サーバー室の見学や管理しているシステムの説明,基幹サーバーへの接続設定や利用しているサービスへの招待などの設定を行う. 前期の授業では,システム管理活動でのオープンキャンパスへの出展があり,発表資料の作成,当日の発表を行った. 資料作成ではシステム管理チームの紹介,メリット,活動内容,管理しているシステムの構成図の作成などをまとめてポスターとして学科webに投稿した. 当日の発表ではプロジェクタを用いてweb上のポスターを共有し参加者にシステム管理活動を説明した. 後期の授業では,本コースの新入生を対象としたインストール大会の資料作成と当日の技術サポートを行った図\ref{fig:install}.本取り組みは新入生が入学後に学内活動を円滑に進める為に実施されている.これにはパソコンの初期セットアップや履修登録に必要な教務情報システムへのログイン,コース内の授業全般で使用するMattermostやZoom,プログラミング環境の構築などが含まれる. 当日の技術サポートでは作業に躓いている新入生に対して個別で対応する. \begin{figure}[htpb] \begin{center} \includegraphics[clip,width=16.0cm]{fig/install-page.png} \caption{インストール大会の資料.} \label{fig:install-page} \end{center} \end{figure} \section{server班} % サーバー班では基幹サーバー上の不具合の調査やその修正をおこなった.取り組みのいくつかを以下に示す. % \begin{quote} % \begin{itemize} % \item バックアップの修正\\ % \item KVMテンプレートイメージファイルの修正\\ % \end{itemize} % \end{quote} % {\bf バックアップの修正}\\ 学科システムでは障害が発生した際にデータを復旧できるようにrsnapshotを用いてバックアップを取っている. このバックアップは主にbraunからNAS上に対してとamaneからクラウドサーバーに対して取っている. NAS上にバックアップを取っているディレクトリとその役割を以下に示す. \begin{itemize} \item /etc \begin{itemize} \item 設定ファイルが置かれているディレクトリ \end{itemize} \item /mnt/cephfs \begin{itemize} \item cephで同期しているディレクトリ \item 学科webやKVMイメージなどが存在する \end{itemize} \item /ie-ryukyu \begin{itemize} \item braun上で稼働するコンテナの設定ファイルやマウントディレクトリが存在する \end{itemize} \item /mnt/nvme0 \begin{itemize} \item 高速な読み書き可能なnvmeディスク \item コンテナイメージやkvmイメージが存在する \end{itemize} \item /usr/local \begin{itemize} \item ローカルで管理するファイルが存在する \end{itemize} \item ume:/mnt/ie-ryukyu/podman/mattermost/mattermost \begin{itemize} \item クラウドサーバー上のMattermostの設定・マウントファイルが存在する \end{itemize} \end{itemize} クラウドサーバーに対して取っているディレクトリとその役割を以下に示す. \begin{itemize} \item amane:/home \begin{itemize} \item ユーザーのホームディレクトリが存在する \end{itemize} \item amane:/ie-ryukyu/ie-web \begin{itemize} \item 学科webページが存在する \end{itemize} \item /mnt/ie-ryukyu/podman \begin{itemize} \item クラウドサーバー上で稼働しているコンテナサービスの設定ファイルが存在する \end{itemize} \item amane:/home/syskan/bkps/ldap-bkp \begin{itemize} \item ldapのバックアップが存在する \end{itemize} \end{itemize} % cephで管理されているディレクトリや学科web,生徒のホームディレクトリのバックアップをとっている. これまで様々な原因でバックアップが取れていないことがあった為,以前の修正から正常に動作しているかの確認を行った. braunからNASに取っているバックアップを確認した所,cronの設定ファイルにて\ref{braunrsnapshot}に示すようにバックアップが定期実行されていた. このcronの設定ファイルから毎週土曜日の3:30にweeklyが設定されている事やrsnapshotの設定あフィルの場所が確認できた.rsnapshotの設定ファイルを確認すると以下のようにログファイルが/var/log/rsnapshot.logに,バックアップ先が/mnt/ts-nas/ie-ryukyu-bkpに取られていることが確認できた.\cite{rsnapshot.config} \begin{lstlisting}[caption=cron.d,label=braunrsnapshot] 30 3 * * 6 root /usr/bin/rsnapshot -c /etc/rsnapshot-ie-ryukyu.conf weekly \end{lstlisting} \begin{lstlisting} config_version 1.2 snapshot_root /mnt/ts-nas/ie-ryukyu-bkp cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger retain weekly 4 retain monthly 12 verbose 4 loglevel 3 logfile /var/log/rsnapshot.log lockfile /var/run/rsnapshot-ie-ryukyu.pid ssh_args -p 1322 backup /etc localhost/ backup /mnt/cephfs localhost/ backup /ie-ryukyu localhost/ backup /mnt/nvme0 localhost/braun-nvme0 backup /usr/local localhost/ backup syskan@ume.ie.u-ryukyu.ac.jp:/mnt/ie-ryukyu/podman/mattermost/mattermost localhost/ \end{lstlisting} これらの情報からバックアップファイルを確認するとweekly.0が作成されており,作成日時を確認すると先週作成されたことがわかった為,scrapboxにこれまでの作業と正常にバックアップがとられている事を記載した.\\ 続いてクラウドサーバー上も同様に確認した所,cronでは週と月ごとにバックアップを取得する設定になっており,バックアップの保存先を確認すると最新のものでも作成日時が昨年の2022年9月で止まっていた.\ref{cloudbackup} \begin{lstlisting}[caption=クラウドサーバーのバックアップファイル一覧,label=cloudbackup] drwxr-xr-x 6 root root 81 Mar 29 2022 monthly.11 drwxr-xr-x 6 root root 81 May 3 2022 monthly.10 drwxr-xr-x 6 root root 81 May 10 2022 monthly.9 drwxr-xr-x 6 root root 81 Jun 29 2022 monthly.8 drwxr-xr-x 6 root root 81 Aug 27 2022 monthly.7 drwxr-xr-x 6 root root 81 Sep 14 2022 daily.5 drwxr-xr-x 6 root root 81 Sep 15 2022 daily.4 drwxr-xr-x 6 root root 81 Sep 17 2022 daily.3 drwxr-xr-x 6 root root 81 Sep 19 2022 daily.2 drwxr-xr-x 6 root root 81 Sep 21 2022 daily.1 drwxr-xr-x 6 root root 81 Sep 22 2022 daily.0 \end{lstlisting} また,ログファイルを確認すると「/mnt/ie-ryukyu/rsnapshot/daily.6 not present (yet), nothing to copy」とありdaily.6が存在しない事からweeklyが生成されていない為,手動でdaily.6のバックアップを作成する事でこの問題を解決した. % {\bf KVMテンプレートイメージファイルの修正} % KVMを用いて計算機リソースの貸し出しを行う際に,四つある基幹サーバーで利用できるOSに差分があった.その為,OSのテンプレートファイルをceph上に置きそれぞれのサーバーで共有した上でie-virshから参照できるようにした. \section{security班} セキュリティ班では学科システムへの脆弱性診断の構築を行った.システム更新前は脆弱性診断環境が設けられていたが,現在の学科システムにはそのような環境が存在しない.さらに,現在の基幹サービスがコンテナで配信されていることから,移行の容易さと管理のしやすさを考慮し,コンテナ環境での構築を行うこととした.基幹サーバーの中には,一台がグローバルIPを持つものがあり,学生が利用するVMについても,申請に応じてグローバルIPを付与することができる.そのため,サーバーのスキャンが可能なVulsを脆弱性診断ツールとして選択した. 基幹サーバー上のPodmanはコンテナ用のネットワークインターフェイスを作成し,コンテナにIPを紐づけるためにadmin権限が必要となる. 学科と同様の環境にする為,Ubuntu22.04のVMにPodman v4をインストールした環境で作業を行った. Ubuntu22にPodmanをインストールする際にデフォルトのパッケージに登録されているPodmanはバージョン3系だった為,下記のようにPodman v4のリポジトリ情報をUbuntuのパッケージ管理ツールであるaptの管理下に追加した. その後,aptコマンドを使用してPodman v4のインストールを行った. \begin{lstlisting}[caption=Podman v4リポジトリ情報追加,label=braunrsnapshot] echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/Debian_Testing/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/unstable/Debian_Testing/Release.key" | sudo apt-key add - \end{lstlisting} Vulsの構築には公式ページ上のvulsctlを参考に行った\cite{vulsctl}.このプロジェクトにはshell commandやdocker用のスクリプトのみが存在した.その為,Podman用のスクリプトを作成しgitlabにて配布した. vulsの構築では脆弱性データベースの取得とスキャン対象サーバーの接続情報,vlusサーバーの脆弱性データベースファイルへのパスを設定ファイルに記述を行った. 図\ref{fig:vuls-tui}はamaneに対して脆弱性診断を行った時の様子である. \begin{figure}[htpb] \begin{center} \includegraphics[clip,width=16.0cm]{fig/vuls-tui.png} \caption{vulsスキャン結果.} \label{fig:vuls-tui} \end{center} \end{figure} \section{考察} 演習実験のサーバー班を受講した12名の学生にアンケートをとった. アンケートの内容は,受講前のシステム管理へのモチベーション,受講後のシステム管理への興味度合い,本テーマを受けての技術習得度,主体的に取り組んだか,授業形式の改善点,演習科目に対する自由意見の項目を挙げた. アンケートの項目とその結果を以下に示す. \begin{center} \begin{longtable}{|p{38em}|} \caption{演習科目でのアンケートの結果} \label{longtablesample} \\ \endhead %begin{longtable}から\endheadまでが常に表頭に挿入される %{1}は1列、{r}は右寄せの意 \hline \multicolumn{1}{|r|}{次のページへ続く。} \\ \hline \endfoot % lastfoot % 表の一番最後に表示されます。 % 省略した場合はfootの内容が表示されます。 \hline \multicolumn{1}{|r|}{終了} \\ \hline \endlastfoot %/endheadの次の行から\endfootまでが常に表末に挿入される 設問1 演習科目のテーマの中でサーバー班を選択した理由を教えてください \\ \quad 1. セキュリティの講義を受けていたこともあり、興味があったから \\ \quad 2. ネットワークの運用やセキュリティについて学びたかった \\ \quad 4. セキュリティの講義を受けていたこともあり、興味があったから \\ \quad 5. ネットワークの運用やセキュリティについて学びたかった \\ \quad 6. サーバやセキュリティ関連の知識を得たかったため \\ \quad 7. 次は開発とかよりも基幹システムについて知りたいなと思ったから \\ \quad 8. OSの講義でシス管に興味を持ってサーバー班を選択しました \\ \quad 9. 実際に動いているシステムを色々見てみたかった \\ \quad 10. サーバーセキュリティについて興味があったから \\ \quad 11. インフラに興味があったから \\ \quad 12. kono先生の講義を受けたいと考えたため \\ \quad 13. 抽選漏れ \\ \\ \hline 設問2 本テーマに期待していたこと、やってみたかったことはありますか \\ \quad 1. セキュリティに関することを学ぶことを期待していました。\\ \quad2. 実際にネットワーク設備の設置をしてみたかった\\ \quad3. 他にもネットワークーサーバ系統の授業をいくつかとっていて、大元を学びたかったです。\\ \quad4.実機を使って何かやるのもいいと思う。(知識がなくて具体的な案が思い浮かばないけど)\\ \quad5.セキュリティ関連の知識の習得をしたかった\\ \quad6.脆弱性診断と学科システムについて\\ \quad7.コースシステムの運用など\\ \quad8.サーバー班やシス管の取り組み、作業の体験\\ \quad9.実際のケーブル設置やサーバーのセキュリティチェックなど\\ \quad10.工学部のネットワークがどのように構成されているのかを学びたかった。\\ \quad11.学科サーバに何かしらのシステムを組み込む。目標を決め、調査し、講義の中でインストールを行うなど。\\ \\ \hline 設問3 本テーマを通して管理活動に興味は湧きましたか?(興味を感じた理由、もしくは興味が湧かなかった理由を教えてください) \\ \quad 1. 管理活動に対しての興味は湧きましたが、実際どうかと言われるとあまりって感じです \\ \quad 2. 興味を感じたが確認する項目が多く大変そうに感じた。 \\ \quad 3. とても沸きました。サーバの重要性を改めて理解できましたし、他の授業と内容がつながって面白かったです。\\ \quad 4. 興味は湧かなかった。必要な知識、経験ではあるが自分がやりたいと思うものではなかった。\\ \quad 5. 工夫しながら利用しやすいものを作ろうとしていることが楽しそうだった。\\ \quad 6. 実際に自分が調査、観察することで現在のサーバーがどのような状態にあるのかを実感でき、興味が湧いた\\ \quad 7. 実際に使っている環境をいじれるのはすごい興味を持ちました。\\ \quad 8. 非常にハードルが高く、自分で学習時間を確保できなかったため、苦しく感じたため、管理活動に興味がわかなかった。\\ \\ \hline 設問4 本テーマを通してどのような技術習得に繋がりましたか? \\ \quad 1. vulsの構築にあたって、セキュリティに関する知識やコンテナに関する知識を少し得ることができた。\\ \quad 2. ファイヤーウォールの中身やブロードキャストストームの説明について学んだ。また、Mattermostの更新や管理について学べた。\\ \quad 3. サーバーの管理方法や脆弱性の検出\\ \quad 4. シェルコマンドの効率的な使い方や、学科でよく使われるシステムのsingularity, podmanの実用的な使い方\\ \quad 5. sshkeyの生成や登録、.ssh/configの設定方法、podmanの使用方法\\ \quad 6. 琉球大学のシステム管理についての技術だけでなく、他のサーバーについてのトラブルなどの対策や解決方法に関する技術取得に繋がりました。\\ \quad 7. 大学ページを手元で動かすことが多く、hugoのcontentとlayoutの対応や、themeなどについて知識習得につながった\\ \quad 8. サイトのファイル構成の構築\\ \\ \hline 設問5 本テーマで管理活動を行う際に工夫した点はありますか? \\ \quad 1. 私は主にVulsに関することを学んだため、サーバやWebサイトなどと言ったことはほぼやらなかったのですが、基本的にVulsに関しては自分がしたことをしっかりメモを取って、scrapboxにも残しておくということはしました\\ \quad 2. 言われたコマンドをただ打つだけでなく、どういう操作をしているかを調べながら実行した\\ \quad 3. わからないことは一度調べてみること\\ \quad 4. scrapboxなどを活用してとにかく記録に残すこと\\ \quad 5. 時間外にhugoやthemeについて調べたり、学科サーバー内のファイルなどをみて回った。\\ \\ \hline 設問6 モブプロ(zoomで画面共有して作業をおこなう)形式での授業について感想をお聞かせください \\ \quad 1. 私の場合は、自身が画面共有してる際にわからないことがあるとすぐに質問できるということがしやすかったです。\\ \quad 2. 画面は見やすかったが、作業のスピードが速く感じる時があった\\ \quad 3. 質問をするタイミングが難しかった。\\ \quad 4. zoomで操作している人と違う箇所でエラーが出た際にそれに対処するのが難しかった\\ \quad 5. 作業を見学している形だったので、どのようなコマンドを使用しているか、どのような作業をしているかなど、わからないことを手元で調べながら見ることができてよかった。\\ \quad 6. 画面共有者の進行度より自分の進行度が遅れると次の作業が分からず手が止まる。\\ \quad 7. オペレーター側が期待する動きのレベルがあまりわからなかったので、ドライバーをするのが怖かった。\\ \quad 8. 頻繁に共有をしたが、自分自身に知識が不足していたため、申し訳なく感じた。ただ、教授は私のような素人にもかなり初期段階の知識から指導していただきわかりやすかった。 \\ \\ \hline 設問7 本テーマを受講してみて改善して欲しい部分や難しかった点を教えてください \\ \quad 1. 「〇〇をしてみて」と言われた際、ほとんどがわからないことであったため、難しかった。\\ \quad 2. 今回、セキュリティ、サーバ(ネットワーク)、Webの3つのグループに分かれてやったのですが、1つに絞るのももちろんいいのですが、1〜2回ほどは他の(私の場合だとセキュリティ以外)分野も触れたかったです。\\ \quad 3. 作業中にエラー等で遅れが生じた場合の部屋が欲しい。(他の人が画面共有での作業の時)\\ \quad 4. 授業ごとにやることを決めるので大まかな内容を決めてた方が授業受けやすい\\ \quad 5. 授業の最初にこの授業では何をし、何がゴールなのかを示すことで授業ごとの満足感を上げられたのではないかと考える\\ \quad 6. 講義の中で難しいと感じた箇所について説明する時間をもう少し設けた方が良いと感じた。 \\ \\ \hline 設問8 演習科目(サーバー班)を受講しての感想や意見をお聞かせください \\ \quad 1. サーバーの構成などの話はどうしても少し抽象的になることが多いので理解するのが難しかった\\ \quad 2. 使用するツールや環境の選定をする時の話が授業よりも実践的で楽しかった。\\ \\ \hline \end{longtable} \end{center} 設問1,2ではシステム管理へのモチベーションを測った.これまでのシステム管理の取り組みでは有志の学生の集まりであった.今回は必修授業での取り組みだった為、システム管理活動に興味を持たない学生の割合が懸念点だった.しかし,選択した理由こそテーマの抽選漏れであれど,セキュリティ,ネットワークに関する知識習得を目的として受講している学生が大半であることがわかった. 設問3では受講後のシステム管理への興味度合いを聞いた.実際に稼働しているシステムを調査、管理することに興味をもつ学生がいる一方で内容についていく為の難易度が高く理解できずに興味が湧かなかったという学生が半数近くいた. 設問4の技術習得について多くみられた感想は、授業内で扱った特定のサービスに関する知識習得だった.半期の授業での取り組みだった事やあくまでシステム管理の体験だった事から総合的な知識の獲得は難しいと思われる.一方でコースシステムだけでなく一般的なシステム管理の技術習得ができたという意見があり,総合的な知識を得られたことがわかる.この差として画面共有して作業する学生が固定化されていることが原因と考える. 設問5では、学生の自主性が確認できた.演習授業をモブプロ形式で進めた為,作業者以外の学生は実行しているコマンドを調査やsclapboxへのログの記述を行い積極的に行動していることがわかった. 設問6は授業中に自主的に画面を共有して作業を行う学生が少なかったことから質問した.実際に作業者としての感想は少数であった.この要因として「オペレーター側が期待する動きのレベルがあまりわからなかったので、ドライバーをするのが怖かった。」とあるようにシステム管理に関する知識がない状態で画面共有しての作業の精神的な難易度の高さが上げられる. 設問7では取り組みの難易度が高いことに関するコメントが多数見られた.システム管理の作業は毎年同じ取り組みではなく,その時に発生した不具合やシステムの問題点からアプローチをかけていく.その為事前に資料を作り込むことが難しい.設問8では実践的な構築,管理の体験ができた事が挙げられた.