LoginSignup
4
3

More than 5 years have passed since last update.

VagrantでCentOS7.3を動作させる(固定IPを振れない場合の対応も追記)

Last updated at Posted at 2017-01-11

準備

事前にダウンロードしてインストールする
Vagrant 1.9.1
VirtualBox 5.1.12-1

インストールと起動

Vagrantのバージョンを確認
$ vagrant --version 
homeに移動
$ cd ~
ディレクトリの作成
$ mkdir centos7
中に移動
$ cd centos7/
初期化 今回入れたのはコチラ https://atlas.hashicorp.com/centos/boxes/7
$ vagrant init centos/7
立ち上げる
$ vagrant up --provider virtualbox
sshで接続 もし、パスワードを聞かれた場合はvagrant
$ vagrant ssh
centosのバージョン確認
$ cat /etc/redhat-release
-> CentOS Linux release 7.3.1611 (Core)

試しにWebページを表示してみる

Apacheの設定

Apacheをインストール
$ sudo yum -y install httpd
起動
$ sudo systemctl start httpd.service
自動起動設定
$ sudo systemctl enable httpd.service
ローカルなのでファイアーウォールを切る
$ sudo systemctl stop firewalld
ファイアーウォールのステータスを確認(inactive状態を確認すること)
$ sudo systemctl status firewalld
ファイアーウォールを切るの自動起動設定
$ sudo systemctl disable firewalld

htmlファイルの作成

htmlのディレクトリに移動
$ cd /var/www/html/
index.htmlを作成 何か適当に記述しておく -> <h1>Hello World</h1>
$ sudo vi index.html

Vagrantファイルのネットワーク設定をする

一回サーバーを終了
$ exit
Vagrantfileを編集
$ sudo vi Vagrantfile
privateネットワークのコメントアウトを外す 
config.vm.network "private_network", ip: "192.168.33.10"
エディターを抜けて
$ vagrant reload

以上でブラウザから接続!!

スクリーンショット 2017-01-10 午後3.19.09.png

接続できない場合の対応(僕のもう片方のMacで構築するとなぜか接続できず) ↓↓↓

まずSELinuxを確認
$ getenforce
-> Disabled

Disabledなので問題なし、次は$ systemctl status httpdでApatchのステータスを確認

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 日 2017-01-01 14:26:53 UTC; 23min ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1040 (httpd)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1040 /usr/sbin/httpd -DFOREGROUND
           ├─1113 /usr/sbin/httpd -DFOREGROUND
           ├─1114 /usr/sbin/httpd -DFOREGROUND
           ├─1115 /usr/sbin/httpd -DFOREGROUND
           ├─1117 /usr/sbin/httpd -DFOREGROUND
           └─1118 /usr/sbin/httpd -DFOREGROUND

Active: active (running)になっているのでOK!
次は外部から通信できているかを確認するためにPingコマンドを使う
$ ping 192.168.33.10

Request timeout for icmp_seq 167
Request timeout for icmp_seq 168
Request timeout for icmp_seq 169
Request timeout for icmp_seq 170
Request timeout for icmp_seq 171

ナルホド...通信できていないようなので、
そもそも192.168.33.10が適切に設定されているのかをipコマンドで確認する
$ ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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:22:5b:53 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 86234sec preferred_lft 86234sec
    inet6 fe80::5054:ff:fe22:5b53/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 08:00:27:23:38:7d brd ff:ff:ff:ff:ff:ff

そもそもeth1"192.168.33.10"が設定されていないことがわかる。
僕は詳しくないネットワーク設定を色々といじった後に戻せなくなると嫌だったので、
ココを参考にShell Scriptで解決することにした。
VagrantFileと同じ階層にbootstrap.shを作成
centos7ifconfigが入っていないのでサーバー側で $ yum install net-toolsを入れる

bootstrap.sh
#固定ip設定
ifconfig eth1 192.168.33.10 netmask 255.255.255.0 up

VagrantFileを修正

config.vm.network "private_network", ip: "192.168.33.10"
# 外部からアクセスできない場合
config.vm.provision :shell, :path => "bootstrap.sh"

$ vagrant haltで一回停止して、$ vagrant up --provisionで起動し直す
--provisionのオプションを付けないとShellScriptが実行されないので注意

外部から$ ping 192.168.33.10で通信できていることを確認

64 bytes from 192.168.33.10: icmp_seq=2242 ttl=64 time=0.256 ms
64 bytes from 192.168.33.10: icmp_seq=2243 ttl=64 time=0.287 ms
64 bytes from 192.168.33.10: icmp_seq=2244 ttl=64 time=0.393 ms
64 bytes from 192.168.33.10: icmp_seq=2245 ttl=64 time=0.356 ms
64 bytes from 192.168.33.10: icmp_seq=2246 ttl=64 time=0.403 ms

$ ip addrでeth1に192.168.33.10が設定されていることを確認

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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:22:5b:53 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 84730sec preferred_lft 84730sec
    inet6 fe80::5054:ff:fe22:5b53/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:23:38:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.10/24 brd 192.168.33.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe23:387d/64 scope link
       valid_lft forever preferred_lft forever

ブラウザから接続
スクリーンショット 2017-01-10 午後3.19.09.png

これでやっと固定IPが設定され、ブラウザからの接続確認ができた
今回はネットワークの設定をあまりいじりしたくなかったので、ShellScriptを実行して解決しました。
起動する時に$ vagrant up --provisionとオプションを毎回付けなければいけないが。。。
一旦ネットワーク設定をいじることなく解決。

4
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3