Vagrant + Hyper-Vでboxを作成する
自分の開発環境はVagrant + Hyper-Vを使っているのですが、 今回ノートPCを新しく購入したこともあって、ゼロからVagrantを起動しようとしたら自分が利用していたboxの公開が終了してました。。。
Vagrant + Hyper-Vは選択肢少ないんですよね。。。
なので今回はbox作成をメモ代わりに残しておこうと思います。
※Windows + Hyper-Vなこともあって色々躓きました。。。
ここに記載する内容は必要最低限にしてあります。
CentOS7のイメージ(iso)からOSを起動する
以下のURLからCentOSのイメージをダウンロードして、CentOSを立ち上げます。
自分は Minimal ISO
の CentOS7 64bit
を利用しました。
hypervkvpdのインストール
hypervkvpd
をインストールしておかないと Waiting for the machine to report its IP address...
と出たところでタイムアウトします。
yum install hypervkvpd systemctl enable hypervkvpd
vagrantユーザーの作成 + 鍵ファイルの設置
passwd # rootのパスワードはvagrantに設定 useradd -g wheel vagrant passwd vagrant # vagrantのパスワードはvagrantに設定
mkdir /home/vagrant/.ssh chmod 700 /home/vagrant/.ssh cd /home/vagrant/.ssh curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' chmod 600 /home/vagrant/.ssh/authorized_keys chown -R vagrant:wheel /home/vagrant/.ssh
その他設定
systemctl stop firewalld systemctl disable firewalld vi /etc/selinux/config - SELINUX=enforcing + SELINUX=disabled vi /etc/sysctl.d/disable_ipv6.conf + net.ipv6.conf.all.disable_ipv6 = 1 + net.ipv6.conf.default.disable_ipv6 = 1 vi /etc/sysconfig/network-scripts/ifcfg-eth0 - UUID=XXXXXXXXXXX
sudoの設定
visudo # コメントアウトを外す %wheel ALL=(ALL) NOPASSWD: ALL
キャッシュの削除
完成するbox自体のサイズを小さくするために、キャッシュを削除しておきます。
yum clean all rm ~/.bash_history history -c
OSの終了
shutdown -h now
作成したOSをエクスポートする
Hyper-V マネージャーを開いて、仮想マシンをエクスポートします。
boxの作成(その1)
エクスポートしたフォルダを開くと以下のようになってるはずです。
- Snapshots
- Virtual Hard Disks
- Virtual Machines
上記のうち、 Snapshots
は不要なので削除します。
boxの作成(その2)
エクスポートしたフォルダに metadata.json
を作成する。
最低限以下のような内容になります。
{ "name": "sakutarou/centos7", "provider": "hyperv" }
作成後、以下になります。
- Virtual Hard Disks
- Virtual Machines
- metadata.json
boxの作成(その3)
Virtual Hard Disks
, Virtual Machines
, metadata.json
の3つ選択した状態で、zip圧縮します。
※この時、上階層のフォルダを選択してzip圧縮するではなく、3つを選択して圧縮してください。
zipファイルが完成後、拡張子を .box
に変更してください。
これでbox完成です。
boxとして利用する
以下のコマンドを実行すれば、作成したboxファイルを利用することが出来ます。
vagrant box add --name "sakutarou/centos7" "centos7.box"
もしくは、atlasにアップするなどして利用してください。
その他
これ使ったら、もっと簡単に作成できるかも?
何も試してないけど
などなど