前回 までにとりあえずansibleを入れてみたので、次はansibleを使ってLAMP環境を構築してみます。
目的
ansibleを利用して、環境構築を簡単に行えるようにする。
ゴール地点
Windows/vagrant/ansibleでLAMP環境を構築し、ホストOSからPHPのHelloWorldの表示までを確認する。
前提条件
ansibleの実行環境が整っていること
できていないかたはこちら
やりかた
vagrantの初回起動時に、シェルを走らせansibleをinstallし、その後にplaybookを実行し環境を構築する。
Vagrantfileの記述
まずはVagrantfileをさくっと記述してしまいましょう。
前回と同じくprovisionを設定することでシェルを実行するようにします。
またsynced_folderでコピー先を/vagrantに設定しましょう。
/vagrantにしている理由は、BOXの名称が変わっても必ず存在するディレクトリを対象にしたかったためです。
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を実行するようにします。
sudo yum install -y epel-release
sudo yum install -y ansible
cd /vagrant
ansible-playbook playbook.yml
playbookを作成する。
実行するplaybookをVagrantfileと同じディレクトリに作成します。
書き方についてはこちらを参考にしてください。
- 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を用意しましょう。
<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が確認できます。