AnsibleでVagrant開発環境(CentOS7.3)を構築する

インフラストラクチャ

概要

VagrantのCentOS7.3に開発環境をAnsibleで構築します。

環境

  • PHP7
  • Ruby
  • Python
  • Nginx
  • MySQL5.7
  • Redis
  • Mailcatcher

構築

ベストプラクティスをある程度模倣した形のディレクトリです。

ansible/
├── group_vars
│   └── vagrant.yml
├── host
├── roles
│   ├── common
│   │   └── tasks
│   │       ├── add_remi_repo.yml
│   │       ├── install_common.yml
│   │       ├── install_epel_release.yml
│   │       └── main.yml
│   ├── composer
│   │   └── tasks
│   │       ├── install_composer.yml
│   │       └── main.yml
│   ├── mailcatcher
│   │   └── tasks
│   │       ├── install_mailcatcher.yml
│   │       └── main.yml
│   ├── mysql
│   │   └── tasks
│   │       ├── install_mysql.yml
│   │       └── main.yml
│   ├── nginx
│   │   ├── tasks
│   │   │   ├── install_nginx.yml
│   │   │   └── main.yml
│   │   └── templates
│   │       ├── bmf-tech.com.conf
│   │       └── localdev.conf
│   ├── php
│   │   └── tasks
│   │       ├── install_php.yml
│   │       └── main.yml
│   ├── python
│   │   └── tasks
│   │       ├── install_python.yml
│   │       └── main.yml
│   ├── redis
│   │   └── tasks
│   │       ├── install_redis.yml
│   │       └── main.yml
│   └── ruby
│       └── tasks
│           ├── install_ruby.yml
│           └── main.yml
├── site.retry
└── site.yml

github - my-ansible-vagrantにソースを上げているので中身はそちらをご参照ください。

Vagrantfileはこんな感じです。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos7.3"

  config.vm.network "private_network", ip: "192.168.33.10"

  config.vm.synced_folder "/path/to/directory", "/var/www/html",:mount_options => ["dmode=775,fmode=664"]

  config.vm.provision "ansible" do |ansible|
    ansible.playbook = "ansible/site.yml"
    ansible.inventory_path = "ansible/host"
    ansible.limit = 'all'
  end

  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.hostname = "localdev"
  config.hostsupdater.aliases = ["localdev"]
end

vagrant provisionでプロビジョニングを実行できます。

追記

php-fpmの設定がおかしい??

nginxでphp7を使うにはphp-fpmとかいうCGIをかます必要があるらしいのですが、これがハマりやすかったです。500エラーが出た時などは、このあたりを設定を見直すと解決するかもです。

VAGRANTにてCENTOS7にNGINX+PHP-FPM+PHP7でLARAVELの開発環境構築(前編)

Vagrantfileに指定したipアドレスにアクセスできない

構築できたものの、Vagrantfileに指定したipにアクセスできずに結構ハマりました。
以下の記事を参考にipの設定を見直したり、firewalldの設定を調整したら何とか解決できました。
(vagrant1.9.0のバグを踏んでしまっていたのが原因だったみたいです。)

所感

CentOS7はそれまでのOSバージョンと異なる部分が結構あるのですが、その対応にはそんなにハマりませんでした。
むしろ、MySQL5.7の対応にハマりました。
とりあえず動くきますが、まだまだ改善の余地があるかと思います。

参考


関連書籍