Codeception を実案件で個人的に導入していますが、もっと汎用的に色々試すことができる環境が欲しくなり、折角環境を作るなら、Vagrant+ansible で、と思ったので手順をメモする
今回は、Vagrant のセットアップまで。
今回のトピックス
- CentOS7 では
ifconfig
が使えない! - Vagrant が 古い(1.7.2とか)だと CentOS7 で IPアドレスが付与されない
(CentOS7 でも、ifconfig 等の net-tools をインストールしていれば古くても問題ないっぽいけど試していない)
動作環境
- OS:Mac OS X El Capitan
- Vagrant, ansible はインストール済み
構築したい環境
- OS:CentOS7(Vagrant)
- DB:MySQL5.7
- Web:Apache+PHP7
Vagrantセットアップ
利用する box はcentos/7
まずは、vagrant init centos/7
して Vagrantfile を作成し、適宜修正する
Vagrantfile のサンプルは以下
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
## ポート番号の設定
config.vm.network :"forwarded_port", guest: 80, host: 8888
config.vm.network :"forwarded_port", guest: 22, host: 2023
## プライペートネットワークの IP アドレスを指定する
config.vm.network :"private_network", ip: "10.0.0.5"
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"
config.vm.provider "virtualbox" do |vb|
## VirtualBoxで表示する名前
vb.name = "DevServer1"
## メモリ
vb.memory = "1024"
## ホストと時間を同期させる設定
vb.customize ["setextradata", :id,
"VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 0]
end
end
vagrant up
でゲストを起動し、vagrant ssh
で SSH 接続してみる
正常にログインできると、以下のようになる
$ vagrant up
## 省略 ##
$ vagrant ssh
Last login: Thu Mar 3 01:59:52 2016 from 10.0.2.2
[vagrant@localhost ~]$
ただ、ゲストは、上の Vagrantfile で 10.0.0.5 に設定しているはずなのに、
ホストからゲストへの ping がタイムアウトになってしまう。。。
$ ping 10.0.0.5
PING 10.0.0.5 (10.0.0.5): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
--- 10.0.0.5 ping statistics ---
とりあえず、再度 ssh でログインし、ifconfig
してみるが、コマンドがないと怒られる。。。
[vagrant@localhost ~]$ ifconfig
-bash: ifconfig: コマンドが見つかりません
調べたら、CentOS7 では ifconfig
ではなく、ip a
とかするらしいので、そちらを実行すると、localhost とホストオンリー用の NIC しか表示されず、Vagrantfile の設定が反映されていない
[vagrant@localhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:7c:4f:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 75142sec preferred_lft 75142sec
inet6 fe80::5054:ff:fe7c:4f9a/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:c1:b8:ff brd ff:ff:ff:ff:ff:ff
今まで CentOS6 系ではここでつまづくことなかったので、7 系でコマンドが変わったことが問題か・・・?と思い、Vagrant のバージョンを確認すると、結構古かったので、最新化してみる
$ vagrant version
Installed Version: 1.7.2
Latest Version: 1.8.1
To upgrade to the latest version, visit the downloads page and
download and install the latest version of Vagrant from the URL
below:
http://www.vagrantup.com/downloads.html
If you're curious what changed in the latest release, view the
CHANGELOG below:
https://github.com/mitchellh/vagrant/blob/v1.8.1/CHANGELOG.md
念のため、一度 vagrant destroy
でイメージ削除してから vagrant up
で起動
$ vagrant up
## 省略 ##
$ vagrant ssh
[vagrant@localhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:7c:4f:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
valid_lft 85775sec preferred_lft 85775sec
inet6 fe80::5054:ff:fe7c:4f9a/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:fa:25:ed brd ff:ff:ff:ff:ff:ff
inet 10.0.0.5/24 brd 10.0.0.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fefa:25ed/64 scope link
valid_lft forever preferred_lft forever
今度はきちんと IP アドレスが設定されており、ホストからの ping も通ったので、Vagrant はこれでOK