WindowsのVargrantでCentOSを起動する

環境は以下です。

  • Windows10
  • VirtualBox 5.2.12
  • Vargrant 2.1.1
  • CentOS7

VirtualBoxのインストール

以下のサイトから、Windows用のVirutalBoxのモジュールを持ってきてインストール。

Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle

Vargrantのインストール

以下のサイトから、Windows用のVargrantのモジュールを持ってきてインストール。

Download - Vagrant by HashiCorp

事前確認

何もしないで vagrant up をすると、以下のエラーで起動できないことがあるので確認。

VT-x/AMD-V hardware acceleration is not available on your system.

(1) CPUのVT-x機能を有効化する

VT-x とはintelの仮想化支援技術とのことで、これを有効化しておく必要があるらしい。BIOSから変更できるので、BIOS画面を表示させて変更。ノートパソコンでは無効になっていることが多いらしく、BIOS画面でセキュリティの項目を確認する。

(2) Hyper-V機能を無効化

Hyper-VもVT-xの機能を利用しているらしく、Hyper-Vが有効になっているとVT-xの機能をうばってしまうらしい。

「コントロールパネル」-「プログラム」-「Windowsの機能の有効化または無効化」で表示された画面より、Hyper-Vチェックボックスを外す。

ゲストOS(CentOS7)の作成

(1) init処理を実施して、Vagrantfileを作成

今回はVagrantCloudにあるbentoプロジェクト内から、CentOS7.5用のboxをダウンロードする。

> vagrant init bento/centos-7.5

(2) 作成されたVagrantfileから、必要に応じ編集。

今回は以下の通り。

Vagrant.configure("2") do |config|
 config.vm.box = "bento/centos-7.5"
 config.vm.network "private_network", ip: "192.168.33.10"
 config.ssh.insert_key = false
 config.vm.provider "virtualbox" do |vm|
  vm.memory = 4096
 end
end

config.ssh.insert_key = false を設定しない場合、vagrant upをした際に、以下のようなワーニングが出てきます。

    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Connection aborted. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:

Vagrantでは、boxに入っていた秘密鍵が安全なものでないと判断された場合、秘密鍵を自動的に作り直す処理をするようです。で、 Vagrant ssh の際に利用される秘密鍵は、その作り変えられた秘密鍵とは異なる、Vagrantインストール時に作成された鍵を利用するため、鍵の不一致が発生してしまう、とのこと。上記のコンフィグを指定することで、鍵の再作成はしないらしい。

Vagrant ssh 時に利用される鍵については、以下のコマンドで確認可能。

> vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/Users/XXXXX/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

(3) ゲストOSを作成

> vagrant up

結構しんどかった。