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 の設定とデータベースをスクリプト化する必要があります。

読者の皆さん、改善策があればアドバイスをお願い致します。

プロジェクトについて

zero dependency role to install Moodle on debian system

インストール
ansible-galaxy install ThePrudents.moodle
ライセンス
Unknown
ダウンロード
70
所有者
StarterSquad team