今までの投稿で Ansible を使って以下を導入してきました。
今回はこれらを組み合わせて phpMyAdmin をインストールします。
phpMyAdmin は MySQL を Web ブラウザから管理することが出来るツールになります。
Web ブラウザからアクセス出来る為、CUI 操作が不慣れな方でも DB の閲覧・管理が容易となります。
※開発環境ということで簡易な設定にしております。利用する際はセキュリティを考慮した設定を必ず行ってください。
環境
- CentOS 6.7
- ansible 2.0
※開発環境利用の為、iptables / SELinux については事前に無効化しております。
※yum で "Developer tools" グループを インストールし、必要なコマンドは適宜導入しています。
Playbook の記述
Playbook は Role 構造で記述します。
Role 作成方法については こちら を参照してください。
構成は以下の通りです。
.
├── group_vars # 各タスクで使用する変数定義
│ ├── dbservers
│ └── webservers
├── hosts
├── roles
│ ├── db
│ │ ├── tasks
│ │ │ ├── main.yml
│ │ │ └── install_mysqld_5_6.yml # MySQL インストール
│ │ └── templates
│ │ └── .my.cnf.j2 # MySQL 接続用設定テンプレートファイル
│ └── web
│ ├── handlers
│ │ └── main.yml # httpd handler の定義
│ └── tasks
│ ├── main.yml
│ ├── install_apr.yml # apr-devel インストール
│ ├── install_apr_util.yml # apr-util-devel インストール
│ ├── install_distcache.yml # distcache インストール
│ ├── install_httpd_2_2.yml # httpd インストール
│ ├── install_php_5_6.yml # php インストール
│ └── install_phpMyAdmin.yml # phpMyAdmin インストール
└── site.yml # インストール対象を設定
以下のファイルについては 上記で紹介した投稿内容を参照してください。
- group_vars/dbservers
- group_vars/webservers
- db/tasks/main.yml
- db/tasks/install_mysqld_5_6.yml
- db/templates/.my.cnf.j2
- web/handlers/main.yml
- web/tasks/install_apr.yml
- web/tasks/install_apr_util.yml
- web/tasks/install_apr_distcache.yml
- web/tasks/install_httpd_2_2.yml
- web/tasks/install_php_5_6.yml
hosts
インストール対象ホストの設定です。
今回は Web も DB もlocalhost (実行サーバ自身) にインストールします。
[webservers]
localhost
[dbservers]
localhost
site.yml
メイン Playbook です。
web / db の役割を持ったサーバにそれぞれのロール手順を実施するよう記述します。
site.yml は慣例として全てのロールを実施するように記述されます。
その為、各サーバグループと対応したロールについて記述した yaml ファイルを include するだけとなります。
site.yml # webservers.yml / dbservers.yml を include
webservers.yml # webservers と web role の関連を記述
dbservers.yml # dbservers と db role の関連を記述
今回はファイルを分けずにまとめて site.yml に記述しています。
---
- name: install and configure the web
hosts: webservers
remote_user: root
roles:
- web
- name: install and configure the db
hosts: dbservers
remote_user: root
roles:
- db
group_vars/webservers
webservers で利用する phpMyAdmin の設定を追記しています。
webservers の内容については上記の Apache/php の記事を参照してください。
# webservers Variables
・・・
中略
・・・
phpMyAdmin:
# ダウンロードURL
url: https://files.phpmyadmin.net/phpMyAdmin/4.5.5.1/phpMyAdmin-4.5.5.1-all-languages.tar.gz
# phpMyAdmin パッケージファイル名
package_filename: phpMyAdmin-4.5.5.1-all-languages
# 作業ディレクトリ
work_dir: /usr/local/src
# 配置ディレクトリ
deploy_dir: /var/www/html
# phpMyAdmin ホームディレクトリ
home_dir: /var/www/html/phpMyAdmin
# phpMyAdmin 設定ファイル変更箇所
config_changes:
- regexp: "^(.*blowfish_secret.*) = .*"
line: "\\1 = 'passphrase';"
※blowfish_secret の設定は適宜パスフレーズを変更してください。
web/tasks/main.yml
main.yml では各タスクの読み込みを行っています。
---
- include: install_apr.yml
- include: install_apr_util.yml
- include: install_distcache.yml
- include: install_httpd_2_2.yml
- include: install_php_5_6.yml
- include: install_phpMyAdmin.yml
install_phpMyAdmin.yml
phpMyAdmin のインストール Playbook です。
phpMyAdmin のパッケージファイルをダウンロード、解凍、配置をして、設定ファイルの編集を行っています。
---
# install phpMyAdmin
- name: phpMyAdmin をダウンロード
get_url:
url: "{{ phpMyAdmin.url }}"
dest: "{{ phpMyAdmin.work_dir }}"
validate_certs: no
- name: ダウンロードした phpMyAdmin ファイルを解凍
unarchive:
src: "{{ phpMyAdmin.work_dir }}/{{ phpMyAdmin.package_filename }}.tar.gz"
dest: "{{ phpMyAdmin.deploy_dir}}"
owner: root
group: root
copy: no
creates: "{{ phpMyAdmin.home_dir }}"
- name: phpMyAdmin ディレクトリの配置
shell: "mv {{ phpMyAdmin.deploy_dir }}/{{ phpMyAdmin.package_filename}} {{ phpMyAdmin.home_dir }}"
args:
creates: "{{ phpMyAdmin.home_dir }}"
- name: phpMyAdmin の設定ファイルを配置
shell: "cp -p {{ phpMyAdmin.home_dir }}/config{.sample,}.inc.php"
args:
creates: "{{ phpMyAdmin.home_dir }}/config.inc.php"
- name: phpMyAdmin 設定ファイル編集
lineinfile:
dest: "{{ phpMyAdmin.home_dir }}/config.inc.php"
backrefs: yes
regexp: "{{ item.regexp }}"
line: "{{ item.line }}"
with_items: "{{ phpMyAdmin.config_changes }}"
notify: restart httpd
以上、タスクの記述となります。
Playbook の実行
作成した Playbook を実行しましょう。
$ ansible-playbook -i hosts webservers.yml
・・・
PLAY RECAP *********************************************************************
localhost : ok=55 changed=45 unreachable=0 failed=0
# 確認の為、再実行
$ ansible-playbook -i hosts webservers.yml
・・・
PLAY RECAP *********************************************************************
localhost : ok=50 changed=1 unreachable=0 failed=0
正常に実行されたでしょうか。
以下にアクセスして動作確認を行いましょう。
http://対象サーバIPアドレス またはホスト名/phpMyAdmin/
今回は複数のロールを利用しました。
役割ごとに複数のサーバを構築する際には必須となります。
ロールやサーバの定義やディレクトリ構造については熟考が必要となります。