Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

今さらですが、久しぶりにローカルに 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

aluceps
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away