LoginSignup
53
65

More than 5 years have passed since last update.

VirtualBox+VagrantでCentOS7環境構築

Last updated at Posted at 2017-01-13

はじめに

CentOS7環境をVirtualBox+Vagrantで環境構築する手順を記します。

構築手順

CentOS7の環境構築は、Ubuntuとほぼ構築手順は同じですが、そのままの同じ手順で行うとエラーが発生するケースがあるので回避する手順が追加されます。

Ubuntu環境構築手順についてはこちらを参照
http://qiita.com/mikoski01/items/366cb9a90b7381a03db0

1. VirtualBoxのインストール

VitualBoxを既にインストールしている場合は読み飛ばしてください。
VitualBox本家サイトからWindows版をダウンロードしインストールします。

2. Vagrantのインストール

Vagrantを既にインストールしている場合は読み飛ばしてください。
Vagrant本家サイトからWindows版をダウンロードしインストールします。

3. Vagrantのプロキシの設定

プロキシを介してVagrantを使う場合はシステム環境変数に下記を追加します。
OSの環境変数に下記のように設定してください。

変数名
HTTP_PROXY http://<プロキシサーバ名>:<ポート番号>
HTTPS_PROXY http://<プロキシサーバ名>:<ポート番号>

【例】ホスト:proxy.mytest.co.jp、ポート:8080の場合
proxy_env.png

4. Vagrantのプラグインをインストール

4-1. vagrant-vbguestをインストール

仮想マシンのカーネルを新しくする度に Guest Additions を手動で再インストールする必要がありますが、vagrant-vbguestプラグインをインストールすることでその煩わしさを取り払ってくれます。便利プラグインなのでインストールすることをお勧めします。

下記コマンドを実行します。

コマンドプロンプト
vagrant plugin install vagrant-vbguest

※詳細について知りたい方はこちらを参照
http://blog.amedama.jp/entry/2015/08/19/204044
https://github.com/dotless-de/vagrant-vbguest

4-2. vagrant-proxyconfをインストール

プロキシを介している場合はインストールしてださい。
このvagrant-proxyconfプラグインを利用すると、ゲストOSの以下の機能に対して Proxy の設定を自動的に行ってくれます。

  • 多くのプログラムがサポートしているhttp_proxyなどの環境変数
  • Chef provisioners
  • Apt
  • Docker
  • Git
  • npm
  • PEAR
  • Yum
  • Subversion

下記コマンドを実行します。

コマンドプロンプト
vagrant plugin install vagrant-proxyconf

※詳細について知りたい方はこちらを参照
http://weblabo.oscasierra.net/vagrant-proxyconf/
https://github.com/tmatilai/vagrant-proxyconf

5. Vagrantfileの作成

コマンドプロンプト
cd <適当な作業フォルダ>
vagrant init

作業フォルダ直下に「Vagrantfile」が作成されているはず。

6. Vagrantfileの修正

前回の手順で生成した「Vagrantfile」ファイルを修正します。

6-1. proxyとvbguestの設定

「Vagrant.configure("2") do |config|」の直後に設定を追記してください。

  • プロキシを介している場合、下記のようにプロキシ情報を設定。 プロキシを介していない場合、「config.proxy.enabled = false」に設定するか、「if Vagrant.has_plugin?("vagrant-proxyconf") ~ end」を記載しなければ正常に稼働します。
  • vbguestを下記のように設定。
Vagrantfile
  ...
Vagrant.configure("2") do |config|

  if Vagrant.has_plugin?("vagrant-proxyconf")
    config.proxy.enabled  = true  # => true; all applications enabled, false; all applications disabled
    config.proxy.http     = "http://<プロキシホスト名>:<プロキシポート>"
    config.proxy.https    = "http://<プロキシホスト名>:<プロキシポート>"
    config.proxy.no_proxy = "localhost,127.0.0.1"
  end

  if Vagrant.has_plugin?("vagrant-vbguest")
    # set auto_update to false, if you do NOT want to check the correct
    config.vbguest.auto_update = true
  end

  # The most common configuration options are documented and commented below.
  ...

6-2. boxの設定

対象のCentOS7のboxを設定します。
今回はCentOS公式のboxを使用します。

まず、下記にアクセスします。
https://www.vagrantup.com/
vagrant_top.png

「Boxes」押下

vagrant_box.png

検索項目に「centos」を入力して検索
「centos/7」が表示されていると思うので、この書式(文字列)をコピーしてVagrantfile内の「config.vm.box」項目に設定します。

Vagrantfile
  ...
Vagrant.configure("2") do |config|
 ...
  config.vm.box = "centos/7"
  ...

6-3. 同期フォルダの設定

ubuntuの時とは異なり、この設定を入れておかないとエラーとなります。
sync_follder_error.png

下記のように設定してください。
※「type:"virtualbox"」を明示的に指定してください。

Vagrantfile
  ...
Vagrant.configure("2") do |config|
 ...
  # config.vm.synced_folder "../data", "/vagrant_data"
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
  ...

共有は下記表のように設定されます。

環境 共有フォルダ 備考
ゲストOS(CentOS7) /vagrant CentOS7にフォルダが用意されているため変更しないで!
ホスト(Windows) .(作業フォルダ) 環境に合わせて変更可能

6-4. IPの設定

IPアドレスを変更したい場合は想定する環境に合わせて設定してください。

Vagrantfile
  ...
Vagrant.configure("2") do |config|
 ...
  config.vm.network "private_network", ip: "192.168.33.10"
  ...

6-5. ポートフォワードの設定

ポートフォワードを設定したい場合は想定する環境に合わせて設定してください。

Vagrantfile
  ...
Vagrant.configure("2") do |config|
 ...
  config.vm.network "forwarded_port", guest: 80, host: 8080
  ...

※ポートフォワードの説明については下記を参照
vagrantのネットワークについて - ポートフォワーディング

7. ゲストOS起動

Vagrantfileの配置されているフォルダで下記コマンドを実行します。

コマンドプロンプト
vagrant up

ゲストOS起動時にエラーが発生した場合

error.png

上図のようなエラーが発生するケースがあります。
エラーが発生した場合は下記コマンドを実行して対応しましょう。

1.ゲストOSにアクセスします。

コマンドプロンプト
vagrant ssh

2.カーネルのアップデートを行います。

コマンドプロンプト(ゲストOSログイン中)
sudo yum -y update kernel

sudo yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

exit

3.再起動します。

コマンドプロンプト
vagrant halt
vagrant up

エラーの原因はカーネルのアップデートまわりだと思われます。
「vagrant-vbguest」プラグインが発動する前にファイル共有処理が実行されるため、カーネルのアップデートが行われません。そのため、初回のみ手動でアップデートを行う必要があります。

※エラーについてこちら参照
http://blog.a-way-out.net/blog/2016/03/11/vagrant-failed-to-mount-folders-in-linux-guest/

8. ゲストOSへログイン

8-1. コマンドプロンプトからそのままログインする場合

Vagrantfileの配置されているフォルダで下記コマンドを実行します。

コマンドプロンプト
vagrant ssh

8-2. ターミナル(TeraTerm、PuTTY等)を使う場合

Vagrantfileで設定したIP(デフォルト: 192.168.33.10)へSSHでログインできます。
Ubuntuとは異なり、鍵を用いてアクセスします。鍵は下記パスを指定してください。
  <作業フォルダ>.vagrant\machines\default\virtualbox\private_key

※ ID / PW : vagrant / なし(鍵を指定)
TeraTermの例
ssh.png

9. ゲストOS停止

Vagrantfileの配置されているフォルダで下記コマンドを実行します。

コマンドプロンプト
vagrant halt

以上。

53
65
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
53
65