Ansible で LimeSurvey を構築する (SELinux/non-remi/deploy-helper 編)

こんにちは。サイオステクノロジー OSS サポート担当で Ansible が大好きな鎌田です。

当ブログで Ansible を使った LimeSurvey インストールの自動化に関する記事が公開されています。

https://tech-lab.sios.jp/archives/11836

が、この内容からさらに以下の観点でいい感じにした Playbook の書き方を紹介したいと思います。

  • 昨今のセキュリティ事情を考慮して、SELinux は enforcing のまま。
  • RPM リポジトリに remi を使わず、信頼性の高い EPEL や SCL (Software Collections) を使う。
  • 切り戻しを考慮して複数バージョンを共存させる。

それでは、やっていきましょう。

環境

構築対象のサーバは CentOS 7.5.1804 で動作するものとします。
使用する Ansible のバージョンは、2.7.1 です。

各処理について

Playbook の全容は、GitHub で公開しています。

https://github.com/SIOS-OSS/techlab-limesurvey

1. EPEL と SCL の有効化

まずは、EPEL と SCL を有効化しなければなりません。centos-release-scl と epel-release をインストールしましょう。

2. 各種必要なパッケージのインストール

CentOS 7 向けの PHP 5.6 は SCL で提供されています。これを考慮したパッケージをインストールしていきます。

3. PHP の設定

PHP のタイムゾーン設定ですが、PHP の設定ファイルである php.ini は INI 形式のファイルです。Ansible には INI ファイルを操作する ini_file モジュールがありますので、こちらを利用しましょう。

4. MariaDB の設定と起動

MariaDB を設定していくわけですが、デフォルトの /etc/my.cnf.d/server.cnf/usr/share/mysql/my-small.cnf で上書きして書き換えるパターンですと、ansible-playbook を実行するたびに changed 状態になってしまいます。
従って、デフォルトの /etc/my.cnf.d/server.cnf を空ファイルにしつつ、初回だけ /usr/share/mysql/my-small.cnf をコピーしてきて、随時設定を書き換えていくパターンにしましょう。
これらはひとまとまりの処理なので、せっかくなので block を使ってまとめます。意味は、あまりありません。

5. LimeSurvey 用のデータベースとユーザを作成

特記することはありません。データベースと、ユーザを作成します。

6. 複数バージョン管理

複数バージョン管理には、便利な deploy_helper モジュールを使います。バージョン番号は、せっかくなので変数を使っています。

7. LimeSurvey のデプロイ

GitHub から tarball を取得して展開します。展開先は、deploy_helper モジュール実行時に定義される deploy_helper.new_release_path に展開します。

8. バージョンアップ時を考慮した処理

バージョンアップを行う場合は、以下のドキュメントにも記載されているように、/application/config/config.php/upload ディレクトリを保持しておけばよさそうです。
synchronize モジュールでいい感じに配置していきます。

Upgrading from a previous version
https://manual.limesurvey.org/Upgrading_from_a_previous_version

9. LimeSurvey のデプロイの続き

所有者、所有グループをちゃんと設定して、さらに SELinux コンテキストを設定します。
handler に設定しているのは、restorecon コマンドを実行するタスクです。
deploy_helper モジュールの finalize を実行すると、現バージョンがデプロイした新バージョンに置き換わります。
Apache のドキュメントルートからたどれるパスにシンボリックリンクを作成しておきます。

10. Apache の設定

SCL でインストールした PHP 5.6 には、Apache モジュールは含まれていないので、PHP-FPM 経由でアクセスします。そのため、Apache には FastCGI 設定が必要です。
設定ファイルは動的に変える必要はないので、以下の内容でコピーします。

11. Apache と PHP-FPM サービスの起動およびファイアウォール設定

特記することはありませんね。お疲れ様でした。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*