windowsとansibleとvagrantでLAMP環境を構築してみる

[前回](http://qiita.com/satoshi-baba-0823/items/44099118678e02fde124) までにとりあえずansibleを入れてみたので、次はansibleを使ってLAMP環境を構築してみます。

#目的
ansibleを利用して、環境構築を簡単に行えるようにする。
#ゴール地点
Windows/vagrant/ansibleでLAMP環境を構築し、ホストOSからPHPのHelloWorldの表示までを確認する。
#前提条件
ansibleの実行環境が整っていること
できていないかたは[こちら](http://qiita.com/satoshi-baba-0823/items/44099118678e02fde124)

#やりかた
vagrantの初回起動時に、シェルを走らせansibleをinstallし、その後にplaybookを実行し環境を構築する。
##Vagrantfileの記述
まずはVagrantfileをさくっと記述してしまいましょう。
前回と同じくprovisionを設定することでシェルを実行するようにします。
またsynced_folderでコピー先を/vagrantに設定しましょう。
/vagrantにしている理由は、BOXの名称が変わっても必ず存在するディレクトリを対象にしたかったためです。

```Vagrantfile.
Vagrant.configure("2") do |config|
  config.vm.box = "vagrant_ansible"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "", "/vagrant", create: true, mount_options: ['dmode=777','fmode=666']
  config.vm.provision :shell, :path => "provision.sh"
end
```

##provision.shを作成
provision.shも前回と同じように作ります。
必ずVagarantfileと同じディレクトリにおいてください。
cdでsynced_folderで指定したディレクトリに移動し、ansible-playbookでplaybookを実行するようにします。

```provision.sh
sudo yum install -y epel-release
sudo yum install -y ansible
cd /vagrant
ansible-playbook playbook.yml
```

## playbookを作成する。
実行するplaybookをVagrantfileと同じディレクトリに作成します。
書き方については[こちら](https://thinkit.co.jp/article/9472)を参考にしてください。

```playbook.yml
- hosts: localhost #127.0.0.1だとcentos7系でなぜか動かない
  connection: local
  sudo: yes
  vars:
    mysql_user_name: vagrant
    mysql_user_password: vagrant
  tasks:
    
    #
    # base
    #
    - name: Install basepackage
      yum: name={{ item }} state=present
      with_items:
        - wget
        - ntp
        - vim
        
    #
    # Apache
    #
    - name: Install Apache
      yum: name=httpd

    - name: Start Apache
      service: name=httpd state=started enabled=yes

    - name: Setting DocumentRoot
      replace: 
        dest=/etc/httpd/conf/httpd.conf
        regexp='DocumentRoot "/var/www/html"'
        replace='DocumentRoot "/vagrant"'
      notify:
        - restart httpd

    - name: enable htaccess
      replace: 
        dest=/etc/httpd/conf/httpd.conf
        regexp='AllowOverride None'
        replace='AllowOverride All'
      notify:
        - restart httpd

    #
    # PHP
    #
    - name: install PHP
      yum: name={{item}}
      with_items:
        - php
        - php-mbstring
        - php-mysql

    - name: setting PHP
      replace: >
        dest=/etc/php.ini
        regexp="^;date\.timezone ="
        replace="date.timezone = Asia/Tokyo"

    #
    # MySQL5.6
    #
    - name: repo MySQL5.6
      command: >
        yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
        creates=/etc/yum.repos.d/mysql-community.repo

    - name: install MySQL
      yum: name={{item}}
      with_items:
        - mysql-server
        - MySQL-python

    - name: start MySQL
      service: name=mysqld state=started enabled=yes

    - name: add user MySQL
      mysql_user: name={{ mysql_user_name }} password={{ mysql_user_password }} priv=*.*:ALL

    #
    # phpMyAdmin
    #
    - name: install phpMyAdmin
      yum: name=phpMyAdmin enablerepo=epel

    - name: change access
      replace: >
        dest=/etc/httpd/conf.d/phpMyAdmin.conf
        regexp=" Deny from All"
        replace=" #Deny from All"
      notify:
        - restart httpd

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

## 確認用のPHPを用意
確認するためのPHPを用意します。
Vagrantfileと同じ場所に、index.phpを用意しましょう。

```index.php
<html>
 <head>
  <title>PHP Test</title>
 </head>
 <body>
 <?php echo '<p>Hello World</p>'; ?> 
 </body>
</html>
```

## ホストOSから確認する
synced_folderとDocumentRootで/vagrantを指定しているので、Vagrantfileと同じ場所にindex.phpを設置することで、http:IPアドレスにアクセスすることで、index.phpを参照してくれます。

ホストOSから[http://192.168.33.10/](http://192.168.33.10/)にアクセスしてHelloWorldを確認しましょう。

[http://192.168.33.10/phpmyadmin/](http://192.168.33.10/phpmyadmin/)にアクセスするとphpmyadminが確認できます。

![WS000002.JPG](https://qiita-image-store.s3.amazonaws.com/0/144029/411cda47-94e2-dde4-5db0-39624b6057c4.jpeg)

ディレクトリはこんな感じになってるはず
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/144029/e12a3475-193f-df79-4f9f-71e1f349b37a.jpeg)