Raspberry Pi(raspbian)にWordPressをAnsibleでセットアップする(その3)

その1その2引き続き、Raspberry PiにWordPressをAnsibleを使ってセットアップします。

Raspberry Pi単体ではストレージがSDカードになりますが、SDカードでは頻繁に読み書きが発生するDBMS(MySQL)を使用すると、IOWaitが増えてパフォーマンスが落ちます。そのため外付けUSBハードディスクドライブを接続し、/varにマウントして使用します。

以前書いた以下の記事から、HDD接続部分を抜き出したものです。
Raspberry PiにUSBハードディスクドライブを接続する

1. ファイル構成

ファイル構成は以下の通りです。ハイライト部分が今回関係するファイルです。

|--conf
| |--locale
| |--localtime
| |--ntp.conf
| |--resolvconf.conf
| |--rules.v4
| |--wp-config.php
|--vars
| |--vars.yml
|--ansible.cfg
|--my.cnf.j2
|--external_strage_connect.yml
|--raspbian_basic_settings.yml
|--wordpress-4.4.2-ja.zip
|--wordpress_server.yml

2. playbookの内容

playbookは以下の通りです。デバイスはUUIDで指定するようにしました。外付けHDDは予めフォーマットしています。
マウント前の/varの内容を保持するため、一旦別ディレクトリ(/media)にマウントし、/varの内容をコピー、その後アンマウントして、再度/varにマウントする。という手順を踏んでいます。

- name: ls /dev/disk/by-uuid
  command: ls -la /dev/disk/by-uuid
  register: ls_result

- debug: var=ls_result.stdout_lines
  when: ls_result

- pause: prompt="Device UUID?"
  register: devuuid

- name: Mount the New Device
  shell: mount -t ext4 "UUID={{ devuuid.user_input }}" /media
  when: devuuid.user_input != ""

- name: Copy /var Data
  shell: cp -rfd /var/* /media/ creates=/media/log/messages
  when: devuuid.user_input != ""

- name: Unmount the New Device
  shell: umount /media
  when: devuuid.user_input != ""

- name: Mount the new device, add the fstab configuration
  mount: name=/var src='UUID="{{ devuuid.user_input }}"' fstype=ext4 state=mounted
  when: devuuid.user_input != ""

・1~3行
指定するUUIDを確認するため、リモートホスト上でコマンド「ls」を実行させて、その結果を表示します。
registerモジュールで、結果を変数ls_resultに保持します。

・5~6行
debugモジュールで、ls_resultに保存していた値を表示します。

・8~9行
pauseモジュールで動作を停止し、プロンプトを表示して入力を待ちます。入力された結果を変数devuuidに保持します。

・11~13行
一旦、外付けHDDを/mediaにマウントします。以降の処理は一度HDDを接続・設定した後は行う必要がないため、whenを使用して変数devuuidに値が入っていない=8行目で表示したプロンプトで何も入力せずEnterを押した場合は、実行されないようにしました。

・15行~17行
/varの内容を、この後/varに成り代わる/mediaにコピーします。既にコピー済みの場合はコピーしないよう、creates句でSyslog
ファイルを指定しました。

・19~21行
/mediaをアンマウントします。

・23~25行
mountモジュールを使用して、外付けHDDを/varにマウントします。mountモジュールを使用すると、/etc/fstabの内容も書き換えてくれるので、再起動後も外付けHDDが/varにマウントされた状態になります。

このplaybookは他から読み込まれる前提で作成しているので、このままでは実行できません。単体で実行する場合は、ファイルを先頭に以下の記述を追加します。xxxの部分は対象ホストのIPアドレスになります。

---
- hosts: xxx.xxx.xxx.xxx
  sudo: yes
  tasks:

次が最後です!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*