その1、その2引き続き、Raspberry PiにWordPressをAnsibleを使ってセットアップします。
Raspberry Pi単体ではストレージがSDカードになりますが、SDカードでは頻繁に読み書きが発生するDBMS(MySQL)を使用すると、IOWaitが増えてパフォーマンスが落ちます。そのため外付けUSBハードディスクドライブを接続し、/varにマウントして使用します。
以前書いた以下の記事から、HDD接続部分を抜き出したものです。
Raspberry PiにUSBハードディスクドライブを接続する
ファイル構成
ファイル構成は以下の通りです。ハイライト部分が今回関係するファイルです。
|--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
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:
次が最後です!