Posted at

Vagrant + Ansible で LAMP 環境を構築する


はじめに

今さらですが、久しぶりにローカルに LAMP 環境を構築する機会があったので手順などをメモします。


準備

以下をインストールします。

Ansible を使いたいので Homebrew でインストールしておきます。

$ brew install ansible


Vagrant

作業ディレクトリを用意して Vagrantfile を作成します。

# 作業ディレクトリの作成

$ mkdir /path/to/work/dir
$ cd /path/to/work/dir

# Vagrantfile の作成
$ vagrant init

box は Vagrant Cloud で提供されているものを使います。今回は centos/7 を利用します。IP アドレスはデフォルトで 192.168.33.10 です。

Vagrant.configure("2") do |config|

config.vm.box = "centos/7"

config.vm.define "hoge" do |node|
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "data", "/vagrant", create: true
end
end

このまま vagrant up するとおそらく共有フォルダのあたりでコケます。理由は VirtualBox Guest Additions のバージョンが合わないからです。なので、それをいい感じにしてくれる Vagrant のプラグインをインストールします。

$ vagrant plugin install vagrant-vbguest

これで vagrant up すると、とりあえず CentOS な環境が出来上がります。ちなみに作成した環境にログインするときは vagrant ssh でもいけますが vagrant ssh-connfig すると ssh で接続するための情報が出力されます。~/.ssh/config に書き込んでおくと ssh default みたいな感じでログインできます。


Ansible

今回は手っ取り早く LAMP 環境を構築したいので、AP サーバとか DB サーバとかは個別に用意しません。

Vagrantfile があるところに provisioning ディレクトリを作成して、その中に playbook.yml として作成します。情報としては古いですが、昔参考にしていた記事 をもとに playbook を作成していきます。

- hosts: playground

become: yes
tasks:
- name: system update
yum:
name: '*'
state: latest

- name: install tools
yum:
name:
- wget
- vim
- git

- name: install repos
yum:
name:
- epel-release
- https://rpms.remirepo.net/enterprise/remi-release-7.rpm
state: present

- name: disable repos
replace:
path: /etc/yum.repos.d/{{item}}
regexp: 'enabled *= *1'
replace: 'enabled=0'
loop:
- epel.repo
- remi.repo
- remi-php70.repo

- name: install packages
yum:
name:
- httpd-devel
- php
- php-devel
- php-mbstring
- php-mysqlnd
- php-pdo
- mariadb-server
enablerepo: "epel,remi-php70"

- name: start httpd
service:
name: httpd
state: started
enabled: yes

- name: start mariadb
service:
name: mariadb
state: started
enabled: yes

これで vagrant provision すると httpd/php/mariadb がインストールされた環境が構築されます。

ブラウザで http://192.168.33.10 にアクセスしてテストページが表示されていれば OK です。

Screen Shot 2019-08-19 at 0.16.46.png