13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VagrantにCentOS 7.0をインストールする

Last updated at Posted at 2015-04-04

概要

当初、Vagrant+CoreOS上でDockerコンテナを実行するつもりだったが、ホストとなるMacをサスペンドさせるとCoreOSの時刻がずれる問題が発覚。PCを立ち上げる度にvagrant reloadとかやるのは面倒。
CoreOSのセキュリティロールの問題もあり、Guest Additionsが入らずハマる。あまりに面倒になったのでゲストはCentOSを使うことで妥協。

         Containers
---------------------------
           Docker
---------------------------
      Vagrant (CentOS) <- Here
---------------------------
         VirtualBox
---------------------------
     LocalMachine (OS X)

関連ページ

前提となる環境

  • Host
    • OS: Mac OS X
    • VirtualBox 4.2.26
    • Vagrant 4.3.26

目的

  • VagrantのゲストOSにCentOS 7.0をインストールする
  • サスペンド復帰後は自動的に時刻をホストに合わせる
  • ゲストOSの設定
    • 固定IP (NAT) を設定
    • 共有ディレクトリを有効化
  • Dockerのインストール (オプション)

実行手順

Vagrantの設定

CentOSのBoxを取得。

$ mkdir -p ~/Vagrant/centos
$ cd ~/Vagrant/centos

$ vagrant box add centos7.0 https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box
$ vagrant init centos7.0

ゲストOSの設定を編集する。

Vagrantfile
# 固定IPの指定
config.vm.network "private_network", ip: "10.0.0.10"

# 共有ディレクトリの設定
config.vm.synced_folder "/Users/naomichi/Projects", "/home/vagrant/Projects", type:"nfs"

# VirtualBoxの設定 (任意)
config.vm.provider :virtualbox do |vb|
  # VirtualBox上の名前
  vb.customize ["modifyvm", :id, "--name", "centos7"]

  # CPU使用率の上限
  vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]

  # CPUの数
  vb.customize ["modifyvm", :id, "--cpus", "2"]

  # メモリサイズ
  vb.customize ["modifyvm", :id, "--memory", "1024", "--cpus", "2", "--ioapic", "on"]
end

Vagrantを起動。

$ vagrant up

Guest Additionsが有効になっているか確認。

$ vagrant vbguest --status
GuestAdditions 4.3.26 running --- OK.

続いてIPアドレスの確認。CentOS 7からnettoolsが非推奨となったので、ここではiproute2パッケージのipコマンドを使ってみる。

$ vagrant ssh
$ ip addr show
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ea:9b:b5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 86364sec preferred_lft 86364sec
    inet6 fe80::a00:27ff:feea:9bb5/64 scope link
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:ac:59:f9 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.10/24 brd 10.0.0.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:feac:59f9/64 scope link
       valid_lft forever preferred_lft forever

enp0s8のIPが10.0.0.10となっていることを確認できる。ちなみにNICの名前も変わったようで、eth0enp0s3eth1enp0sのようにそれぞれ変更されていた。

続いて共有ディレクトリがマウントされているか確認。

$ ls -la
合計 24
drwx------. 4 vagrant vagrant 4096  4月  4 00:38 .
drwxr-xr-x. 3 root    root      20  8月  1  2014 ..
-rw-------. 1 vagrant vagrant  189  4月  4 00:39 .bash_history
-rw-r--r--. 1 vagrant vagrant   18  6月 10  2014 .bash_logout
-rw-r--r--. 1 vagrant vagrant  193  6月 10  2014 .bash_profile
-rw-r--r--. 1 vagrant vagrant  231  6月 10  2014 .bashrc
drwx------. 2 vagrant vagrant   28  4月  4 00:26 .ssh
-rw-------. 1 vagrant vagrant  644  8月  1  2014 .viminfo
drwxr-xr-x. 1 vagrant vagrant  238  4月  3 05:40 Projects

OK。
最後にゲストOSの時刻をホストOSに合わせるよう指定。

$ sudo /usr/sbin/VBoxService --timesync-set-threshold 60000
-------------------
00:00:00.001875 main     Log opened 2015-04-04T04:40:26.606637000Z
00:00:00.001976 main     OS Product: Linux
00:00:00.002008 main     OS Release: 3.10.0-123.4.4.el7.x86_64
00:00:00.002037 main     OS Version: #1 SMP Fri Jul 25 05:07:12 UTC 2014
00:00:00.002058 main     OS Service Pack: #1 SMP Fri Jul 25 05:07:12 UTC 2014
00:00:00.002106 main     Executable: /opt/VBoxGuestAdditions-4.3.26/sbin/VBoxService
00:00:00.002109 main     Process ID: 4075
00:00:00.002110 main     Package type: LINUX_64BITS_GENERIC
00:00:00.002147 main     4.3.26 r98988 started. Verbose level = 0
-------------------

Vagrantを再起動した後も同期が有効になるよう設定。

Vagrantfile
config.vm.provider :virtualbox do |vb|
  vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 60000]
end

ゲストOSのセットアップ (任意)

パッケージを最新にする

$ sudo yum update -y

Dockerのインストール

$ sudo yum install -y docker-io device-mapper-event-libs

# サービスを有効化 (systemctlはchkconfigに替わるコマンド)
$ sudo systemctl start docker.service

# 起動時にDockerを開始する
$ sudo systemctl enable docker.service
ln -s '/usr/lib/systemd/system/docker.service' '/etc/systemd/system/multi-user.target.wants/docker.service'

$ Dockerが自動起動の対象となっているか確認
$ systemctl list-unit-files -t service|grep docker
docker.service                              enabled

# Dockerの情報を表示
$ sudo docker info
Containers: 0
Images: 0
Storage Driver: devicemapper
 Pool Name: docker-253:1-8938407-pool
 Pool Blocksize: 65.54 kB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 307.2 MB
 Data Space Total: 107.4 GB
 Data Space Available: 5.202 GB
 Metadata Space Used: 729.1 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Udev Sync Supported: true
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Execution Driver: native-0.2
Kernel Version: 3.10.0-229.1.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
CPUs: 1
Total Memory: 489.6 MiB
Name: localhost.localdomain
ID: TOEB:TVTL:MLJ7:TYAH:PHAP:TZUU:XXOL:ANQM:TPL6:FGZQ:U36R:UI6Y

Dockerコンテナに対し、ゲスト (あるいはホスト) の共有ディレクトリを有効にすると、マウントはされるがディレクトリの中身が閲覧できない ("Permission denied"エラーが発生する) 問題がある。
これはCentOSのSELinuxが原因であるため、無効化しておくと良い。

# 現在のSELinuxの動作モードを確認
$ getenforce

# SELinuxが有効
Enforcing
/etc/sysconfig/selinux
-) SELINUX=enforcing
+) SELINUX= disabled

設定変更後はvagrantの再起動が必要。

タイムゾーンの変更

デフォルトではEDTとなっていたのでJSTに変更。

$ timedatectl
      Local time: 木 2015-04-09 22:04:55 JST
  Universal time: 木 2015-04-09 13:04:55 UTC
        Timezone: America/New_York (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

$ sudo  timedatectl set-timezone Asia/Tokyo
$ timedatectl
      Local time: 木 2015-04-09 22:07:12 JST
  Universal time: 木 2015-04-09 13:07:12 UTC
        Timezone: Asia/Tokyo (JST, +0900)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

ファイアウォールを無効にする

CentOS7からiptableの代わりとなるfirewalldが追加された。仮想環境下ではファイアウォールの必要性がないので外しておく。

$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
rm '/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service'
rm '/etc/systemd/system/basic.target.wants/firewalld.service'

# 設定が無効になったことを確認
$ systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled)
   Active: inactive (dead)
13
12
0

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
13
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?