LoginSignup
2
3

More than 5 years have passed since last update.

Ansible でインストール (phpMyAdmin)

Posted at

今までの投稿で 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 (実行サーバ自身) にインストールします。

hosts
[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 に記述しています。

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 の記事を参照してください。

group_vars/webservers
# 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 では各タスクの読み込みを行っています。

tasks/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_php_5_6.yml
---
# 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/

phpmyadmin.jpg

今回は複数のロールを利用しました。
役割ごとに複数のサーバを構築する際には必須となります。
ロールやサーバの定義やディレクトリ構造については熟考が必要となります。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3