VagrantのCentOS7.3に開発環境をAnsibleで構築します。
ベストプラクティスをある程度模倣した形のディレクトリです。
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
でプロビジョニングを実行できます。
nginxでphp7を使うにはphp-fpmとかいうCGIをかます必要があるらしいのですが、これがハマりやすかったです。500エラーが出た時などは、このあたりを設定を見直すと解決するかもです。
VAGRANTにてCENTOS7にNGINX+PHP-FPM+PHP7でLARAVELの開発環境構築(前編)
構築できたものの、Vagrantfileに指定したipにアクセスできずに結構ハマりました。
以下の記事を参考にipの設定を見直したり、firewalldの設定を調整したら何とか解決できました。
(vagrant1.9.0のバグを踏んでしまっていたのが原因だったみたいです。)
CentOS7はそれまでのOSバージョンと異なる部分が結構あるのですが、その対応にはそんなにハマりませんでした。
むしろ、MySQL5.7の対応にハマりました。
とりあえず動くきますが、まだまだ改善の余地があるかと思います。