Vagrant+ansibleでLAMP環境構築（４）

## ここまで
Vagrant で CentOS7 を起動し、ansible-playbook によって、LAMP 環境をインストールした、、、つもり

ansible-playbook の実行には成功したが、以下の問題点がある

1. PHP のバージョンが古かった  
→ これは単純に、OS の標準バージョンをインストールしたからなので、PHP7 をインストールするように手順を修正すれば解決するはず
2. php-mysql をインストールしたはずなのに、インストールできてない？(phpinfo で pdo_mysql が表示されていない)  
→ 多分だけど、php-mysql をインストールした後に MariaDB を削除したために依存性の影響で一緒に削除されている・・・？

~~今回は1つ目の PHP7 に対応する~~
２つとも解決したので内容をまとめる

## PHP7 対応
### playbook を修正する

[ここらへん](https://webtatic.com/packages/php70/)を参考に、playbook を修正してみる

```yaml:playbook.yml(抜粋)
    - name: epel リポジトリ追加
      yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    - name: remi リポジトリ追加
      yum: name=https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

    - name: PHP インストール
      yum: name={{item}}
      with_items:
        - php70w
        - php70w-mbstring
        - php70w-mysql
      notify:
        - restart httpd

    - name: PHPをタイムゾーンの設定
      replace: >
        dest=/etc/php.ini
        regexp="^;date\.timezone ="
        replace="date.timezone = Asia/Tokyo"
```

### playbook 実行

MySQL 部分をコメントアウトした状態で、再度 playbook を実行する
が、その前に vagrant のイメージをクリーンな状態に戻すため、
`vagrant destroy`→`vagrant up`する

```sh
PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [10.0.0.5]

TASK [OS 最新化] ******************************************************************
changed: [10.0.0.5]

TASK [DeveloperTool インストール] ****************************************************
changed: [10.0.0.5]

TASK [vim インストール] **************************************************************
changed: [10.0.0.5]

TASK [Apache インストール] ***********************************************************
changed: [10.0.0.5]

TASK [Apache 起動] ***************************************************************
changed: [10.0.0.5]

TASK [.htaccessを有効にする] *********************************************************
changed: [10.0.0.5]

TASK [epel リポジトリ追加] ************************************************************
changed: [10.0.0.5]

TASK [remi リポジトリ追加] ************************************************************
changed: [10.0.0.5]

TASK [PHP インストール] **************************************************************
changed: [10.0.0.5] => (item=[u'php70w', u'php70w-mbstring', u'php70w-mysql'])

TASK [PHPをタイムゾーンの設定] ***********************************************************
changed: [10.0.0.5]

RUNNING HANDLER [restart httpd] ************************************************
changed: [10.0.0.5]

PLAY RECAP *********************************************************************
10.0.0.5                   : ok=12   changed=11   unreachable=0    failed=0   
```

正常に処理が完了したので、再度 info.php を作成して、ブラウザから確認してみる

![2016-03-06 23.42.56.png](https://qiita-image-store.s3.amazonaws.com/0/115864/13117dee-b104-8138-684c-3d5d9110c124.png)


PHP7 インストールは解決！！

## MySQL5.7 対応

ここまでの時点で phpinfo の内容を確認すると、正しく pdo_mysql が入っているので、この後に mariadb-libs を削除しているのがやはり問題と思われる

そのため、インストール順序を入れ替えて再度実行してみる

### playbook修正

```yaml:playbook.yml
- hosts: DevServer1
  become: yes
  tasks:
    #
    # システム
    #
    - name: OS 最新化
      yum: name=* state=latest

    - name: DeveloperTool インストール
      yum: name="@Development tools"

    - name: vim インストール
      yum: name=vim

    #
    # MySQL 5.7
    #
    - name: MariaDB 削除
      yum: name=mariadb-libs state=removed

    - name: MySQL5.7 リポジトリ追加
      yum: name=http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm state=present

    - name: MySQL5.7 インストール
      yum: name=mysql-community-server

    - name: MySQL5.7 起動
      service: name=mysqld state=started enabled=yes

    #
    # Apache
    #
    - name: Apache インストール
      yum: name=httpd

    - name: Apache 起動
      service: name=httpd state=started enabled=yes

    - name: .htaccessを有効にする
      replace:
        dest=/etc/httpd/conf/httpd.conf
        regexp='AllowOverride None'
        replace='AllowOverride All'
      notify:
        - restart httpd

    #
    # PHP
    #
    - name: epel リポジトリ追加
      yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state=present

    - name: remi リポジトリ追加
      yum: name=https://mirror.webtatic.com/yum/el7/webtatic-release.rpm state=present

    - name: PHP インストール
      yum: name={{item}}
      with_items:
        - php70w
        - php70w-mbstring
        - php70w-mysql
      notify:
        - restart httpd

    - name: PHPをタイムゾーンの設定
      replace: >
        dest=/etc/php.ini
        regexp="^;date\.timezone ="
        replace="date.timezone = Asia/Tokyo"

  handlers:
    - name: restart httpd
      service: name=httpd state=restarted
```

### playbook 実行

再度`vagrant destroy`→`vagrant up` し、playbook を実行する

```sh
PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [10.0.0.5]

TASK [OS 最新化] ******************************************************************
changed: [10.0.0.5]

TASK [DeveloperTool インストール] ****************************************************
changed: [10.0.0.5]

TASK [vim インストール] **************************************************************
changed: [10.0.0.5]

TASK [MariaDB 削除] **************************************************************
changed: [10.0.0.5]

TASK [MySQL5.7 リポジトリ追加] ********************************************************
changed: [10.0.0.5]

TASK [MySQL5.7 インストール] *********************************************************
changed: [10.0.0.5]

TASK [MySQL5.7 起動] *************************************************************
changed: [10.0.0.5]

TASK [Apache インストール] ***********************************************************
changed: [10.0.0.5]

TASK [Apache 起動] ***************************************************************
changed: [10.0.0.5]

TASK [.htaccessを有効にする] *********************************************************
changed: [10.0.0.5]

TASK [epel リポジトリ追加] ************************************************************
changed: [10.0.0.5]

TASK [remi リポジトリ追加] ************************************************************
changed: [10.0.0.5]

TASK [PHP インストール] **************************************************************
changed: [10.0.0.5] => (item=[u'php70w', u'php70w-mbstring', u'php70w-mysql'])

TASK [PHPをタイムゾーンの設定] ***********************************************************
changed: [10.0.0.5]

RUNNING HANDLER [restart httpd] ************************************************
changed: [10.0.0.5]

PLAY RECAP *********************************************************************
10.0.0.5                   : ok=16   changed=15   unreachable=0    failed=0   
```

正常に動作し、phpinfo でも pro_mysql が表示された
試しに MySQL に適当な DB、テーブルを作成し、そこに対して SELECT するサンプルソースを実装し、ブラウザから実行してみたらデータが表示されたので、LAMP 環境の構築は一旦これで完了とする