読者です 読者をやめる 読者になる 読者になる

Windows10のHyper-Vを使ったVagrantのBoxファイル作成方法

前準備

Hyper-VでBox化するOSを起動しセットアップ

  • Hyper-V上でOS(ここではCentOS7 Minimal)を起動しセットアップする。
  • その際、最低限、root権限で以下の設定を行う。
    • SE LinuxおよびFirewallをOFFにする。
      % setenforce 0
      % systemctl stop firewalld.service
      % systemctl disable firewalld.service

    • さらに、/etc/sysconfig/selinuxを編集して、
       SELINUX=disable
       SELINUXTYPE=targeted
      に設定する。

    • 以下のPackageをinstallする。
      % yum -y install openssh-clients hyperv-daemons hypervkvpd
      % systemctl enable hypervkvpd.service

    • sudoersを編集する。
      % sed --in-place --expression='s/^Defaults\s*requiretty/# &/' /etc/sudoers
      % echo "vagrant ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/vagrant

    • rootのパスワードをvagrantにする。

    • vagrantのアカウントを作成する。
      % useradd --user-group --create-home /home/vagrant
      % echo "vagrant:vagrant" | chpasswd

    • SSH公開鍵認証を取得する。
      % mkdir -m 0700 -p "/home/vagrant/.ssh"
      % curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub >> "/home/vagrant/.ssh/authorized_keys"
      % chmod 600 "/home/vagrant/.ssh/authorized_keys"
      % chown -R "vagrant:vagrant" "/home/vagrant/.ssh"

    • ネットワークインタフェースにDHCPを設定する。
      % cat < /etc/sysconfig/network-scripts/ifcfg-eth0
      DEVICE="eth0"
      TYPE="Ethernet"
      BOOTPROTO="dhcp"
      ONBOOT="yes"
      IPV6INIT="yes"
      IPV6_AUTOCONF="yes"
      NM_CONTROLLED="no"
      EOF

    • キャッシュファイルおよび履歴を削除する。
      % yum clean all
      % rm -rf /tmp/*
      % rm -f /var/log/wtmp /var/log/btmp
      % history -c

    • 未使用領域をゼロフィルする。
      % dd if=/dev/zero of=/EMPTY bs=1M
      % rm -f /EMPTY
      % sync

    • シャットダウンする。
      % poweroff

Boxファイルを作成

  • 仮想マシンをエクスポートする。

  • Boxファイルを作成する。

    • Git Bashを起動し、仮想マシンがエクスポートされたディレクトリに移動する。
      エクスポートされた以下のディレクトリ構成のうちSnapshotsを削除する。
      1.Snapshos
      2.Virtual Hard Disks
      3.Virtual Machines
    • metadata.jsonファイルを作成する。
      % cat > matadata.json <<EOF
      {
      "name": "xxxyyyzzz/centos-7.0-x86_64-minimal-hyperv",`
      "provider": "hyperv"
      }
      EOF

    • 出来たファイルをtar+gz形式でまとめてBoxファイルを作成する。
      % tar czvf my-VAGRANTSLASH-CentOS7.box *