More than 1 year has passed since last update.

前回 までにとりあえずansibleを入れてみたので、次はansibleを使ってLAMP環境を構築してみます。

目的

ansibleを利用して、環境構築を簡単に行えるようにする。

ゴール地点

Windows/vagrant/ansibleでLAMP環境を構築し、ホストOSからPHPのHelloWorldの表示までを確認する。

前提条件

ansibleの実行環境が整っていること
できていないかたはこちら

やりかた

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と同じディレクトリに作成します。
書き方についてはこちらを参考にしてください。

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/にアクセスしてHelloWorldを確認しましょう。

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

WS000002.JPG

ディレクトリはこんな感じになってるはず
WS000000.JPG

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.