ThePrudents.moodle
Ansible を使用した Ubuntu 14.04 上の BlueMix クラウド環境での Moodle インストール
はじめに
Moodleはオープンソースのコース管理プラットフォームで、オンライン学習サイトを作成できます。Moodleは「モジュラーオブジェクト指向ダイナミック学習環境」の略称です。少人数から数百人の学生までスケーラブルな効率的なオンライン学習体験を提供するさまざまな機能を備えています。
課題の提出、クイズ、FAQ、スコアリング、インスタントメッセージ、ディスカッションボードなどを導入できます。また、モジュール式のソフトウェアなので、プラグインを使って追加機能を追加することも可能です。
Moodleは通常 LAMP (Linux, Apache, MySQL, PHP) 上で動作しますが、nginx などの他のウェブサーバや、Windows の IIS でも使用できます。
モジュラー性は利点でもあり欠点でもあります。教師の場合、自分の好みのテーマやプラグインがあるため、非技術的なユーザーにとっては初期の Moodle インストールが非常に手間になります。
幸いなことに、Ansible というデプロイメント自動化ツールがインストール時間を短縮してくれます。
背景
対処すべき課題
- 必要な Moodle コンポーネントを記述する
- 必要に応じて MySQL をインストールする(外部データベースの使用も可能)
- 必要に応じて LAMP をインストールする(Moodle 自体のアップグレードも考慮)
- お好きな Moodle のプラグインやテーマをインストールする
- Moodle のコアコンポーネントをインストールする
ステップバイステップで進めましょう。
必要な Moodle コンポーネントの記述
公式のインストールチュートリアルに従い、パッケージ依存関係と必要な PHP 拡張をリストします。
pkg_dependencies:
- git
- curl
- python-dev
- libmysqlclient-dev
- graphviz
- aspell
- clamav
- unzip
php_extensions:
- php5-mysql
- php5-intl
- php5-xmlrpc
- php5-pspell
- php5-curl
- php5-gd
- php5-ldap
Moodle 自体のために、希望するデータベースアクセスパラメータ、Moodle インスタンスに割り当てるドメイン、希望の場所を指定する必要があります。また、最新の安定版 Moodle バージョンを確認して指定することも考えましょう。
moodle_db_type: 'mysqli'
moodle_db_host: '{{mysql_host}}'
moodle_db_name: 'moodle'
moodle_db_user: 'moodle'
moodle_db_pass: 'moodle'
moodle_app_domain: "moodle.dev"
moodle_app_root: "/opt/moodle"
moodle_app_wwwroot: "{{ moodle_app_root }}/moodle"
moodle_app_datadir: "{{moodle_app_root}}/moodledata"
moodle_app_plugindir: "{{moodle_app_root}}/downloadedplugins"
moodle_git_version: "MOODLE_30_STABLE"
moodle_artifact_baseurl: https://download.moodle.org/download.php/direct/stable30
moodle_archive_version: "moodle-latest-30.tgz"
moodle_user: "{{ansible_user_id}}"
moodle_admin_user: "6NHkm*S!^W4w"
Moodle は git リポジトリからまたはアーティファクトをダウンロードしてインストールできます。git オプションはメンテナンスが容易なため、現在は git を推奨します。
option_install_moodle: git
必要に応じた MySQL インストール
Moodle は複数のデータベースをサポートしていますが、MySQL が最も一般的です。MySQL をインストールするためには、必要な MySQL のルート認証情報を指定するだけです。
mysql_host: "127.0.0.1"
mysql_root_user: root
mysql_root_password: SOMEROOTSECUREPASSWORD
Moodle は独自の MySQL 設定の好みがあります。これはカスタム my.cnf テンプレートで対応されています。
必要に応じた LAMP インストール
LAMP のインストールでは、apache を worker または prefork モードでインストールできます。これにより PHP のインストール方法が変わります。現在は worker モードが好まれています。
apache_mode: worker
apache2_disable_default: true
php_family: default
必要に応じたカスタム Moodle のプラグインとテーマ
ほとんどのプラグインとテーマは、適切なフォルダにアーカイブを解凍することでインストールできます。このプロセスを自動化することが可能で、好みのプラグイン情報を教えてもらえれば大丈夫です。
moodle_plugins:
- {
name: auth_googleoauth2,
desc: "Authentication: Google / Facebook / Github / Linkedin / DropBox / Windows / VK / Battle.net authentication",
url: "https://moodle.org/plugins/download.php/9695/auth_googleoauth2_moodle30_2015110600.zip",
dest: auth
}
- {
name: mod_checklist,
desc: "Activities: Checklist",
url: "https://moodle.org/plugins/download.php/9703/mod_checklist_moodle30_2015110800.zip",
dest: mod
}
Moodle コアコンポーネントのインストール
この段階で Moodle のディレクトリを作成し、データベースの設定を行い、このインスタンスのための Apache 仮想ホストを設定します。
詳細は次の場所で確認できます: https://github.com/ThePrudents/moodle/blob/master/tasks/moodle.yml
実行コード
プロビジョニングを実行するためには、Ansible と Prudentia が必要です。どちらのツールも純粋な Python です。Ansible は DevOps ツールキットで、Prudentia は Ansible プレイブックを簡単に実行するための「合成糖」を提供します。
Ubuntu でのツールの一般的なインストール手順は次のとおりです:
sudo apt-get install git
sudo apt-get install python-pip
pip install -U pip
pip install -U ansible==1.9.4
pip install prudentia
Moodle ロールを再利用するための一般的な構文は次のとおりです。
roles:
- {
role: "pr-moodle",
moodle_db_host: '127.0.0.1',
moodle_db_name: 'moodle',
moodle_db_user: 'moodle',
moodle_db_pass: 'yoursupersecurepassword',
moodle_app_domain: "yourdomainname.com"
}
プロビジョニングを実行するシェルファイルの例です。
WORKSPACE=./
BOX_PLAYBOOK=$WORKSPACE/boxes/prod.yml
BOX_NAME=moodle_staging
BOX_ADDRESS=192.168.0.17
BOX_USER=youruser
BOX_PWD=yourpass
prudentia ssh <<EOF
unregister $BOX_NAME
register
$BOX_PLAYBOOK
$BOX_NAME
$BOX_ADDRESS
$BOX_USER
$BOX_PWD
provision $BOX_NAME
EOF
BlueMix での実行
IBM Bluemix は、IBM が開発した PaaS(Platform as a Service)です。さまざまなプログラミング言語とサービス、アプリケーションの構築、実行、デプロイ、管理のための統合 DevOps をサポートしています。
Ubuntu 14.04.3 LTS イメージを選択します。
パブリック IP アドレスをインスタンスに割り当て、初期化を待ちます。
初期化が完了したら、Bluemix プラットフォームから受け取ったパブリック IP アドレスを設定することを忘れないでください。
プロビジョニングの実行時には、Ansible プロビジョナーの成功ログが見えるはずです。
見ての通り、5 分以内に Moodle が設定されます。
サイトにアクセスすると、初期の Moodle スタート画面が見えます。
すべてのカスタムプラグインやテーマが正しく配置されていることを確認できます。
改善点
理想的には、レシピは完全に非対話式に拡張できると良いでしょう。Moodle は将来的にそのようなセットアップを許可するようです。しかし現在のところ、その方法についての明確な説明はなく、既存の Moodle の設定とデータベースをスクリプト化する必要があります。
読者の皆さん、改善策があればアドバイスをお願い致します。