Windows 環境上の Vagrant で RHEL7 互換 Linux ディストリビューションの Box を自作する手順について、自分用のメモとしてまとめました。
CentOS 7 でも同じ手順になる思いますが、今回は、Oracle Linux 7 の Box を次に示す環境のホストマシンで自作します。
ソフトウェア名 | バージョン | 備考 |
---|---|---|
OS | Windows Server 2012 R2 Update | - |
Chocolatey | 0.9.8.27 | - |
VitrualBox | 4.3.14 |
cup VirtualBox でインストール |
Vagrant | 1.6.3 |
cup Vagrant でインストール |
7-Zip | 9.22.01.20130618 |
cup 7zip でインストール |
cwRsync | 5.3.0 |
cup cwRsync でインストール |
1: 自作 Box のベースとなるゲスト OS(仮想マシン)の作成
手順 1: ゲスト OS(仮想マシン)を作成します
PS> & vboxmanage createvm `
--name "vagrant-oracle-linux-release-7-x86_64" `
--ostype "Oracle_64" `
--register
PS> & vboxmanage list vms
"vagrant-oracle-linux-release-6-x86_64" {{ゲスト OS の UUID}}
手順 2: ホストマシンのハードウェア仮想化支援機能対応有無に合わせてゲスト OS(仮想マシン)の設定をします
PS1> & vboxmanage modifyvm "vagrant-oracle-linux-release-7-x86_64" `
--memory 4096 `
--rtcuseutc "on" `
--cpus 2 `
--cpuexecutioncap 100 `
--ioapic "on" `
--hpet "on" `
--hwvirtex "on" `
--nestedpaging "on" `
--largepages "on" `
--vtxvpid "on" `
--accelerate3d "off" `
--accelerate2dvideo "off" `
--nic1 "nat" `
--natpf1 "ssh,TCP,,2222,,22" `
--nictype1 "virtio" `
--nictype2 "virtio" `
--nictype3 "virtio" `
--nictype4 "virtio"
手順 3: ゲスト OS(仮想マシン)に IDE ストレージコントローラーを追加します
PS> & vboxmanage storagectl "vagrant-oracle-linux-release-7-x86_64" `
--name "IDE Controller" `
--add "ide"
PS> & vboxmanage showvminfo "vagrant-oracle-linux-release-7-x86_64" | Select-String "storage"
Storage Controller Name (0): IDE Controller
Storage Controller Type (0): PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0): 2
Storage Controller Port Count (0): 2
Storage Controller Bootable (0): on
手順 4: ゲスト OS(仮想マシン)に SATA ストレージコントローラーを追加します
PS> & vboxmanage storagectl "vagrant-oracle-linux-release-7-x86_64" `
--name "SATA Controller" `
--add "sata" `
--portcount 2
PS> & vboxmanage showvminfo "vagrant-oracle-linux-release-7-x86_64" | Select-String "storage"
Storage Controller Name (0): IDE Controller
Storage Controller Type (0): PIIX4
Storage Controller Instance Number (0): 0
Storage Controller Max Port Count (0): 2
Storage Controller Port Count (0): 2
Storage Controller Bootable (0): on
Storage Controller Name (1): SATA Controller
Storage Controller Type (1): IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1): 30
Storage Controller Port Count (1): 2
Storage Controller Bootable (1): on
手順 5: 任意のフォルダーを作成して、インストールメディアのイメージファイルを配置します
インストールメディアのイメージは以下のウェブサイトからダウンロードします。
https://edelivery.oracle.com/linux
PS> New-Item -Path "D:\ISOs" -ItemType "Directory" -Force
PS> Get-ChildItem -Path "D:\ISOs"
ディレクトリ: C:\ISOs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014/xx/xx xx:xx 4172283904 V46135-01.iso
手順 6: ゲスト OS(仮想マシン)にインストールメディアの DVD イメージファイルをアタッチします
PS> & vboxmanage storageattach "vagrant-oracle-linux-release-7-x86_64" `
--storagectl "IDE Controller" `
--port 0 `
--device 0 `
--type "dvddrive" `
--medium "D:\ISOs\V46135-01.iso"
PS> & vboxmanage list dvds
UUID: {仮想 DVD の UUID}
State: created
Type: readonly
Location: D:\ISOs\V46135-01.iso
Storage format: RAW
Capacity: 3979 MBytes
手順 7: 空の仮想ハードディスクイメージファイルを作ります
PS> & vboxmanage createhd `
--filename "$HOME\VirtualBox VMs\vagrant-oracle-linux-release-7-x86_64\box-disk1.vdi" `
--size 40960
PS> Get-Item -Path "$HOME\VirtualBox VMs\vagrant-oracle-linux-release-7-x86_64\box-disk1.vdi"
ディレクトリ: C:\Users\xxxxxx\VirtualBox VMs\vagrant-oracle-linux-r
elease-7-x86_64
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014/xx/xx xx:xx 2097152 box-disk1.vdi
手順 8: ゲスト OS(仮想マシン)に仮想ハードディスクイメージファイルをアタッチします
PS> & vboxmanage storageattach "vagrant-oracle-linux-release-7-x86_64" `
--storagectl "SATA Controller" `
--port 0 `
--device 0 `
--type "hdd" `
--medium "$HOME\VirtualBox VMs\vagrant-oracle-linux-release-7-x86_64\box-disk1.vdi"
PS> & vboxmanage list hdds
UUID: {仮想ハードディスクの UUID}
Parent UUID: base
State: created
Type: normal (base)
Location: C:\Users\kukita.keisuke\VirtualBox VMs\vagrant-oracle-linux-release-7-x86_64\box-disk1.vdi
Storage format: VDI
Capacity: 40960 MBytes
手順 9. ゲスト OS(仮想マシン)を起動します
PS> & vboxmanage startvm "vagrant-oracle-linux-release-7-x86_64"
2: Oracle Linux 7.0 のインストール
手順 1: インストーラーを開始します
リストから以下を選択しEnterキーを入力します
- "Intall Oracle Linux 7.0"
手順 2: 言語を選択します
リストから以下を選択し [Continue] ボタンをクリックします
- "English (United States)"
手順 3: タイムゾーンの設定画面に移ります
[DATE & TIME] と書かれてる部分をクリックします
手順 4: タイムゾーンを設定します
以下を選択し画面左上の [Done] ボタンをクリックします
- Region: Asia
- City: Tokyo
手順 5: キーボード配列の設定画面に移ります
[KEYBOARD] と書かれてる部分をクリックします
手順 6: キーボード配列を設定します
以下を選択し画面左上の [Done] ボタンをクリックします
- Japanese
手順 7: ディスクのパーティショニングの設定画面に移ります
[INSTALLATION DESTINATION] と書かれてる部分をクリックします
手順 8: ディスクのパーティショニングを設定します
画面左上の [Done] ボタンをクリックします
手順 9: インストールを開始します
画面右下の [Begin Installation] ボタンをクリックしインストールが完了するまで待ちます
手順 10: root
ユーザーのパスワード設定画面に移ります
[ROOT PASSWORD] と書かれてる部分をクリックします
手順 11: root
ユーザーのパスワードを設定します
パスワードに以下の値を設定し画面左上の [Done] ボタンを 2 回クリックします
- vagrant
手順 12: インストールの完了を確認しゲスト OS(仮想マシン)をリブートします
画面右下の [Reboot] ボタンをクリックします
3: vagrant ユーザーの作成
手順 1: root ユーザーでログインします
localhost login: root
Password: ******* ← vagrantと入力します。
手順 2: wheel グループに所属するユーザー vagrant を作成します
[root@localhost ~]# useradd "vagrant" -g "wheel" -u 900
[root@localhost ~]# grep "vagrant" /etc/passwd
vagrant:x:900:10::/home/vagrant:/bin/bash
→ 上記のように表示されれば成功です。wheel グループとは root 特権を得ることのできるユーザーの属するグループです。"Big wheel(=大物、有力者)"に由来します。
手順 3: vagrant ユーザーのパスワードを設定します
[root@localhost ~]# echo 'vagrant' | passwd --stdin "vagrant"
手順 4: wheel グループに sudo 実行の許可を与えます
[root@localhost ~]# cat << EOF | tee -a /etc/sudoers
%wheel ALL=(ALL) NOPASSWD: ALL
Defaults:%wheel !requiretty
EOF
[root@localhost ~]# tail /etc/sudoers
:
省略
:
%wheel ALL=(ALL) NOPASSWD: ALL
Defaults:%wheel !requiretty
→ 上記の2行が追記されていることを確かめます。
手順 5: ログアウトします
[root@localhost ~]# logout
手順 6: vagrant ユーザーでログインします
localhost login: vagrant
Password: ******* ← vagrantと入力します。
4: root ユーザーの無効化
手順 1: passwd コマンドを使って root ユーザーをロックします
[vagrant@localhost ~]$ sudo passwd -l "root"
[vagrant@localhost ~]$ sudo passwd -S "root"
→ "(Passwod locked.)"と表示されることを確かめます。
5: ネットワークの有効化
手順 1: コネクション名を確認します
[vagrant@localhost ~]$ nmcli connection show
NAME UUID TYPE DEVICE
eth0 488e0fce-a33e-47b5-b4aa-a6e6d20f7b00 802-3-ethernet --
→ NAME 欄の値が eth0 であることを確かめます。
※ ifconfig
コマンドは非推奨コマンドになりました。
手順 2: コネクション eth0 の自動接続を有効にします
[vagrant@localhost ~]$ nmcli connection modify "eth0" "connection.autoconnect" "yes"
[vagrant@localhost ~]$ nmcli -f "connection.autoconnect" connection show "eth0"
connection.autoconnect: yes
→ 値が yes であることを確かめます。
手順 3: コネクションを有効にします
[vagrant@localhost ~]$ nmcli connection up "eth0"
※ ifup
/ ifdown
コマンドは非推奨コマンドになりました。
手順 4: IP アドレスが割り当てられていることを確かめます
[vagrant@localhost ~]$ ip address show
手順 5: Yum を使って net-tools パッケージをインストールします
[vagrant@localhost ~]$ sudo yum -y install "net-tools"
[vagrant@localhost ~]$ rpm -qa | grep "net-tools"
net-tools-2.0-0.17.20131004git.el7.x86_64
→ net-tools
は非推奨パッケージになりました。ただし、Vagrant でネットワーク・インターフェースを追加などする時に必要となるためにインストールしています。
6: パッケージのアップデートと SELinux の無効化
手順 1: Yum を使って全てのパッケージを最新バージョンにアップデートにします
[vagrant@localhost ~]$ sudo yum -y update
手順 2: SELinux を無効にします
[vagrant@localhost ~]$ sudo sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
[vagrant@localhost ~]$ grep "disabled" /etc/selinux/config
# disabled - No SELinux policy is loaded
SELINUX=disabled
→ 値が disabled になっていることを確かめます。
手順 3: ゲスト OS(仮想マシン)を再起動します
[vagrant@localhost ~]$ sudo systemctl reboot
→ ゲスト OS(仮想マシン)が再起動するまで待ちます。リブートのタイミングで最新のカーネルが読み込まれ、SELinux が無効に設定されます。
※ shutdown
/ reboot
コマンドは非推奨コマンドになりました。
手順 4: ホストマシンから SSH を使ってゲスト OS(仮想マシン)にログインします
PS> & ssh vagrant@localhost -p 2222
手順 5: SELinux が無効化されたことを確認します
[vagrant@localhost ~]$ sudo /usr/sbin/sestatus
SELinux status: disabled
→ disabled と表示されていることを確かめます。
7: OpenSSH Server の設定
手順 1: 設定ファイルを編集します
[vagrant@localhost ~]$ sudo sh -c "cat <<EOF | tee -a /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
PermitRootLogin no
MaxSessions 10
ClientAliveCountMax 3
ClientAliveInterval 600
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
UseDNS no
EOF"
[vagrant@localhost ~]$ sudo tail -11 /etc/ssh/sshd_config
Port 22
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
PermitRootLogin no
MaxSessions 10
ClientAliveCountMax 3
ClientAliveInterval 600
PermitRootLogin no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
UseDNS no
手順 2: GitHub 上に公開されている Vagrant の公式リポジトリから秘密鍵をダウンロードします
[vagrant@localhost ~]$ sudo curl -kL "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant" -o /etc/ssh/ssh_host_rsa_key
[vagrant@localhost ~]$ sudo cat /etc/ssh/ssh_host_rsa_key
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
+vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
-----END RSA PRIVATE KEY-----
手順 3: GitHub 上に公開されている Vagrant の公式リポジトリから公開鍵をダウンロードします
[vagrant@localhost ~]$ sudo curl -kL "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub" -o /etc/ssh/ssh_host_rsa_key.pub
[vagrant@localhost ~]$ sudo cat /etc/ssh/ssh_host_rsa_key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
手順 4: ディレクトリを作成します
[vagrant@localhost ~]$ mkdir -p ~/.ssh
[vagrant@localhost ~]$ ls -ld ~/.ssh/
drwxr-xr-x 2 vagrant wheel 4096 Xxx xx xx:xx /home/vagrant/.ssh/
手順 5: 公開鍵のシンボリックリンクを作成します
[vagrant@localhost ~]$ ln -sf /etc/ssh/ssh_host_rsa_key.pub ~/.ssh/authorized_keys
[vagrant@localhost ~]$ ls -l ~/.ssh/authorized_keys
lrwxrwxrwx 1 vagrant wheel 29 Xxx xx xx:xx /home/vagrant/.ssh/authorized\_keys -> /etc/ssh/ssh_host_rsa_key.pub
手順 6: sshd サービスを再起動します
[vagrant@localhost ~]$ sudo systemctl restart sshd
[vagrant@localhost ~]$ sudo systemctl status sshd
※ service
コマンドは非推奨コマンドになりました。
手順 7: リスニングポートの状態を確認します
[vagrant@localhost ~]$ sudo ss -lp | grep ssh
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",xxxx,3))
→ 上記のように表示されていれば成功です。
※ netstat
コマンドは非推奨コマンドになりました。
8: VirtualBox Guest Addtions のインストール
手順 1: Yum を使って依存パッケージをインストールします
[vagrant@localhost ~]$ sudo yum -y install gcc bzip2 make kernel-uek-devel
[vagrant@localhost ~]$ rpm -qa | egrep "gcc|bzip2|make|kernel-uek-devel"
libgcc-4.8.2-16.2.el7_0.x86_64
gcc-4.8.2-16.2.el7_0.x86_64
bzip2-1.0.6-12.el7.x86_64
bzip2-libs-1.0.6-12.el7.x86_64
make-3.82-21.el7.x86_64
kernel-uek-devel-3.8.13-44.el7uek.x86_64
手順 2: VirtualBox Guest Addtions のインストールメディアのイメージをダウンロードします
[vagrant@localhost ~]$ vbox_version=$(curl -L "http://download.virtualbox.org/virtualbox/LATEST.TXT")
[vagrant@localhost ~]$ curl -L -O "http://download.virtualbox.org/virtualbox/${vbox_version}/VBoxGuestAdditions_${vbox_version}.iso"
[vagrant@localhost ~]$ ls -l
total 64400
-rw-r--r-- 1 vagrant wheel 65943552 Xxx xx xx:xx VBoxGuestAdditions_4.3.14.iso
手順 3: インストールメディアのイメージファイルをマウントします
[vagrant@localhost ~]$ sudo mount -o loop ./VBoxGuestAdditions_${vbox_version}.iso /media/
[vagrant@localhost ~]$ df -h /media/
Filesystem Size Used Avail Use% Mounted on
/dev/loop0 63M 63M 0 100% /media
手順 4: インストーラーを実行します
[vagrant@localhost ~]$ sudo sh -c "/media/VBoxLinuxAdditions.run install"
:
省略
:
Removing existing VirtualBox non-DKMS kernel modules[ OK ]
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules [ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module [ OK ]
Building the shared folder support module [ OK ]
Building the OpenGL support module [ OK ]
Doing non-kernel setup of the Guest Additions [ OK ]
Starting the VirtualBox Guest Additions [ OK ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
手順 5: インストールメディアのイメージファイルをアンマウントします
[vagrant@localhost ~]$ sudo umount /media/
手順 6: インストールメディアのイメージファイルを削除します
[vagrant@localhost ~]$ rm -f ./VBoxGuestAdditions_${vbox_version}.iso
9: 仕上げ
手順 1: Yum のキャッシュを削除します
[vagrant@localhost ~]$ sudo yum clean all
手順 2: コマンド履歴 .bash_history
を削除します
[vagrant@localhost ~]$ sudo rm -f /root/.bash_history
[vagrant@localhost ~]$ rm -f ~/.bash_history
手順 3: ディスクの空き領域をゼロデータで埋めます
[vagrant@localhost ~]$ sudo dd if=/dev/zero of=/empty.dat bs=1M; sudo rm -f /empty.dat
手順 4: ゲスト OS(仮想マシン)をシャットダウンします
[vagrant@localhost ~]$ sudo systemctl poweroff
→ ゲスト OS(仮想マシン)が完全にシャットダウンするまで待ちます。
※ shutdown
/ poweroff
/ halt
コマンドは非推奨コマンドになりました
10: Boxファイルの作成
Vagrant には、vagrant package
という Box 作成のためのコマンドが用意されていますが Windows 環境では上手く動作しません。そこで、ここでは別の方法で Box ファイルの作成を行います。
手順 1: 任意の場所に Box ファイル作成時に一時的に利用するフォルダーを作成します
PS> & New-Item -Path "D:\vagrant\tmp\ol7" -ItemType "Directory" -Force
手順 2: 自作 Box のベースとするゲスト OS (仮想マシン)に割当てられた MAC アドレスを確認します
PS> & vboxmanage showvminfo "vagrant-oracle-linux-release-7-x86_64" --machinereadable | Select-String -Pattern "macaddress1"
手順 3: 作成したフォルダー下に Vagrantfile
という名前でファイルを作成します
PS> New-Item -Path "D:\vagrant\tmp\ol7\Vagrantfile" -ItemType "File"
PS> Invoke-Item -Path "D:\vagrant\tmp\ol7\Vagrantfile"
Vagrant::Config.run do |config|
# This Vagrantfile is auto-generated by 'vagrant package' to contain
# the MAC address of the box. Custom configuration should be placed in
# the actual 'Vagrantfile' in this box.
config.vm.base_mac = "確認した MAC アドレス"
end
# Load include vagrant file if it exists after the auto-generated
# so it can override any of the settings
include_vagrantfile = File.expand_path('../include/_Vagrantfile', __FILE__)
load include_vagrantfile if File.exist?(include_vagrantfile)
手順 4: 自作 Box のベースとするゲスト OS (仮想マシン)情報を OVF 形式で出力します
PS> & vboxmanage export "vagrant-oracle-linux-release-7-x86_64" --output "D:\vagrant\tmp\ol7\box.ovf"
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully exported 1 machine(s).
手順 5: 任意の場所に Box ファイル出力用のフォルダーを作成します
PS> & New-Item -Path "D:\vagrant\boxfiles" -ItemType "Directory" -Force
手順 6: 7-Zip を使って TAR 形式で圧縮します
PS> & 7z a -ttar "D:\vagrant\boxfiles\vagrant-oracle-linux-release-7-x86_64.box" "D:\vagrant\tmp\ol7\*"
→ 自作 Box の完成です。
11: テスト用ゲスト OS(仮想マシン)の作成
手順 1: 作成した Box ファイルを登録します
PS> & vagrant box add "oracle-linux-release-7-x86_64" "D:\vagrant\boxfiles\vagrant-oracle-linux-release-7-x86_64.box" -f
PS> & vagrant box list
oracle-linux-release-7-x86_64 (virtualbox)
→ 上記のように表示されれば成功です。
手順 2: 任意のディレクトリを作成しカレントディレクトリを移動します
PS> New-Item -Path "$HOME/test_workspace" -ItemType "Directory"
PS> Set-Location -Path "$HOME/test_workspace"
手順 3: Vagrantfile を作ります
PS> & vagrant init "oracle-linux-release-7-x86_64"
PS> Get-Item -Path "./Vagrantfile"
ディレクトリ: C:\Users\Administrator\test_workspace
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014/xx/xx xx:xx 4958 Vagrantfile
手順 4: Vagrantfile を読み込みます
PS> & vagrant reload
[default] VM not created. Moving on...
→ 上記のように表示されれば成功です。
手順 5: ゲスト OS(仮想マシン)を作成します
PS> & vagrant up
PS> & vagrant status
Current machine states:
default running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
→ 上記のように表示されれば成功です。
手順 6: 作成したゲスト OS(仮想マシン)に SSH 接続で接続します
PS> & vagrant ssh
Last login: Xxx Xxx xx xx:xx:xx xxxx from 10.0.2.2
[vagrant@localhost ~]$
→ 上記のようにプロンプトが表示されれば成功です。
手順 7: ゲスト OS(仮想マシン)からログアウトします
[vagrant@localhost ~]$ logout
Connection to 127.0.0.1 closed.
Bento、Packer といった Box の作成を自動化するツールもありますが、地道に手を動かしてみることで、理解を深められると思います。
GitHub上の公式レポジトリ:Bento
https://github.com/opscode/bento
公式ウェブサイト:Packer
http://www.packer.io/
以上、Oracle Linux Release 7 の自作 Box の作成手順でした。