はじめに
新しく研究室に加わる人に対して、作業環境をセットアップするのは、これまで私の役割でした。研究室という環境上、この作業を繰り返していました。
しかし、このプロセスはいくつかの問題を抱えています。例えば、管理者権限を設定する必要があったり、環境変数の設定方法を忘れてしまい、毎回調べ直さなければならなかったりと、煩雑です。そこで、このセットアッププロセスを自動化することにしました。これにより、私が卒業した後も、このノウハウが残り、後輩たちの負担が軽減されると思います。特に新しいメンバーが加わるタイミングでは、この自動化ツールが大きな役割を果たすと確信しています。
コード
以下に示すスクリプトは、Ubuntu環境下で新規ユーザーに対してMinicondaをインストールし、Jupyter Notebookを利用可能にするものです。スクリプトの詳細な説明はコード内コメントをご参照ください。なお、Minicondaで管理されるパッケージのインストールは、個々のニーズに応じて行ってください。
あと使用時はリダイレクトに管理者権限が必要なため、sudoで実行するようにしてください。
setup_env.sh
# Usage: bash setup_env.sh 新規ユーザ名 パスワード
# Description: 新規ユーザのホームディレクトリにMinicondaをインストールし、Jupyter Notebookを使えるようにする
# 注意: このスクリプトは、Ubuntu でのみ動作確認しています
#!/bin/bash
# 新規ユーザ名を引数として受け取る
new_user=$1
password=$2
# ホストIPアドレスの設定
# 自動で先頭のIPアドレスを取得しているので、jupyterlabなどのコマンドがうまく使えないときは、
# .bashrcなどを確認すること
host_ip=$(hostname -I | cut -d ' ' -f 1)
# ユーザを作成
sudo useradd -m -s /bin/bash $new_user
# パスワードの設定
echo "$new_user:$password" | sudo chpasswd
# ユーザのホームディレクトリ変数
user_home="/home/$new_user"
# パッケージ類のインストール
sudo apt update && sudo apt upgrade -y
sudo apt install -y git vim wget
# Minicondaインストーラーのダウンロード
sudo wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.11.0-2-Linux-x86_64.sh -O $user_home/miniconda.sh
# Minicondaのインストール (ユーザー権限で実行)
sudo -u $new_user bash $user_home/miniconda.sh -b -p $user_home/miniconda
# 環境変数PATHの設定をユーザーの.bashrcに追加
echo "export PATH=\"$user_home/miniconda/bin:\$PATH\"" >> $user_home/.bashrc
# Miniconda環境内でJupyter Notebookをインストール
sudo -u $new_user bash -c "source $user_home/miniconda/bin/activate && conda install -y jupyter"
# よく使うパッケージはインストールしておく
sudo -u $new_user bash -c "$user_home/miniconda/bin/pip install numpy matplotlib pandas lightgbm scikit-learn"
# 新規ユーザーの.bashrcにaliasを追加
# 空白なしのコマンドでipアドレス付きでjupyterを起動できるようにする
# つまり、リモートデスクトップなどを使う必要がなく、自分のPCのブラウザからアクセスできるようにする
echo "alias jupyterlab='jupyter lab --ip=$host_ip'" >> $user_home/.bashrc
echo "alias jupyternotebook='jupyter notebook --ip=$host_ip'" >> $user_home/.bashrc
# Miniconda環境を有効化するためのコマンドを.bashrcに追加
echo "source $user_home/miniconda/bin/activate" >> $user_home/.bashrc
echo "$new_userの開発環境のセットアップが完了しました。"
Gist
一応、Gistの方でも公開しました。
https://gist.github.com/sugimochi97/657906ad7244360fe316d7d638cb9c34