VagrantのBase Boxを作成する - ubuntu14.04 Server編(随時更新)
Vagrant関連の検索で訪れる人が多いのでまとめておく。
今後、VagrantのBox作成関連はこのページを随時更新する形にしたいと思う。
作業の流れ
- Box作成前の確認事項
- VirtualBoxへubuntuインストール
- VirtualBoxへssh接続
- root設定
- vagrantユーザ設定
- システム設定
- 共有ディレクトリ設定
- vagrantパッケージ作成
- box登録
- 確認
Box作成前の確認事項
32bitか64bitか
ゲストOSに割り当てるメモリ量が4GB以下であれば32bit、それより大きければ64bitというのが目安
基本的にスクリプト言語の開発環境と言うことで考えるのであれば、言語側でその差異を吸収してくれているので、作成した物はどちらの環境で作ったものでも双方の環境で動く。
複数環境起動したりする事を考えるのであれば32bit版で動かしてメモリを節約したほうがいいと思う。
※ もちろん、必要なパッケージが64bit版しか提供されていなかったりする場合はこの限りでは無い。
仮想ディスクについて
仮想ディスクはvdiで作成。初期サイズは4GBにして、足りなければ拡張する
以下は4GBで作成した場合のディスクサイズになる。
base32_4gb_ubuntu1404 13:55:31 zow$ ls -l total 4463072 drwx------ 4 zow staff 136 1 31 06:53 Logs -rw------- 1 zow staff 8167 1 31 13:54 base32_4gb_ubuntu1404.vbox -rw------- 1 zow staff 8047 1 31 08:05 base32_4gb_ubuntu1404.vbox-prev -rw------- 1 zow staff 1778384896 1 31 07:57 base32_4gb_ubuntu1404.vdi -rw-r--r-- 1 zow staff 506689293 1 31 08:07 package.box base32_4gb_ubuntu1404 13:55:35 zow$
システム内部からみるとこんな感じになる。
vagrant@base32-4gb-ubuntu1404:~$ df -m Filesystem 1M-blocks Used Available Use% Mounted on /dev/sda1 3463 1131 2137 35% / none 1 0 1 0% /sys/fs/cgroup udev 239 1 239 1% /dev tmpfs 50 1 50 1% /run none 5 0 5 0% /run/lock none 248 0 248 0% /run/shm none 100 0 100 0% /run/user vagrant 114538 40051 74488 35% /vagrant vagrant@base32-4gb-ubuntu1404:~$
4GBのうち、500MBぐらいはスワップ領域で使用しているため、実際に使用できる領域は約3.5GB。
現在はほぼシステムのみをインストールした状態で、使用しているのは1GB強。空き領域は2GB強になる。
これだけの領域が余っていれば、開発環境として充分だと思う。
「/vagrant」はホストOS側の領域になるので、最悪、ここを利用すれば問題無いと思う。
もし、それ以上の空き領域が必要なのであれば、vdiで作成しているので、簡単に領域を増やすことが出来る。
使用するインストールOSイメージ
余程の事情が無ければインストール時に使用するOSイメージはminimalを使用した方が良い
Installation/MinimalCD - Community Help Wiki
普通のフルOSイメージを使うと、インストール後にアップデートする必要が出てくる。その際、古いパッケージが新しくなったりする過程でいらないパッケージや、古いカーネルイメージ等が残ってしまう。仮想ディスクのサイズを減らすために、これらの不必要なパッケージを削除する事になるのだけど、そんな手間を掛けるぐらいなら、最初から最新の物をインストールしてしまえば良い。
minimalのイメージは小さい為、インストールするパッケージがイメージ内に無い。インストールするパッケージはネットから最新の物をダウンロードしてくる。なので、インストール直後はアップデートの必要が無い最新の環境が出来上がる。ネットからのインストールになる為多少時間はかかるが、初期サイズが小さいに越したことは無いので、VagrantのBoxを作る場合はminimalを使用した方がいいと思う。
VirtualBoxへubuntuインストール
以下の設定値でディスクを作成する。
設定項目 | 設定値 |
---|---|
名前 | base32_4gb_ubuntu1404 |
タイプ | Linux |
バージョン | Ubuntu(32 bit) |
メモリ | 512MB |
仮想ハードドライブ | 作成する |
ファイルタイプ | VDI |
ストレージ | 可変 |
ファイルの名前 | base32_4gb_ubuntu1404 |
ファイルのサイズ | 4GB |
オーディオ | 無効 |
USB | 無効 |
OS設定項目
項目 | 設定値 |
---|---|
ホスト名 | base32-4gb-ubuntu1404 |
ユーザ名 | vagrant |
パスワード | vagrant |
Timezone | Asia/Tokyo |
パーティション | ガイド-ディスク全体を使う |
アップグレード | 自動的にアップデートしない |
インストールするソフトウェア | Basic Ubuntu server, OpenSSH server |
VirtualBoxへssh接続
まず、ゲストOSのIPアドレスを調べる。
vagrant@base32-4gb-ubuntu1404:~$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:ba:fa:2f inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:feba:fa2f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:164 errors:0 dropped:0 overruns:0 frame:0 TX packets:126 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20330 (20.3 KB) TX bytes:21447 (21.4 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vagrant@base32-4gb-ubuntu1404:~$
ここでVirtualBoxで、[ネットワーク]-[アダプター1]-[高度な設定]-[ポートフォワーディング]を開き、VMの22番ポートをホスト側の任意のポートに割り当ててやる。
設定したら、ホストOSからssh接続出来るようになる。ポート指定で接続する。
~ 06:57:33 zow$ ssh vagrant@127.0.0.1 -p 2222 The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established. RSA key fingerprint is 8e:bc:3c:1a:4c:0c:dc:7a:bc:fa:87:64:40:fa:00:5d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[127.0.0.1]:2222' (RSA) to the list of known hosts. vagrant@127.0.0.1's password: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic i686) * Documentation: https://help.ubuntu.com/ System information as of Sat Jan 31 06:56:52 JST 2015 System load: 0.03 Processes: 69 Usage of /: 30.6% of 3.38GB Users logged in: 1 Memory usage: 6% IP address for eth0: 10.0.2.15 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ 0 packages can be updated. 0 updates are security updates. Last login: Sat Jan 31 06:56:52 2015 from 10.0.2.2 vagrant@base32-4gb-ubuntu1404:~$
root設定
rootのパスワードを「vagrant」にする。
vagrant@base32-4gb-ubuntu1404:~$ sudo passwd root [sudo] password for vagrant: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully vagrant@base32-4gb-ubuntu1404:~$
変更したら、設定したパスワードでrootになれる事を確認する。
vagrant@base32-4gb-ubuntu1404:~$ su - Password: root@base32-4gb-ubuntu1404:~#
vagrantユーザ設定
sudoの設定
パスワード無しでsudo出来るようにする。
まず、vagrantユーザの所属グループを確認する。
vagrant@base32-4gb-ubuntu1404:~$ id vagrant uid=1000(vagrant) gid=1000(vagrant) groups=1000(vagrant),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lpadmin),111(sambashare) vagrant@base32-4gb-ubuntu1404:~$
「sudo」グループに所属している。このグループに所属しているユーザはsudoが可能になっている。このグループに対してパスワード無しでsudoを利用出来るように設定してやる。
vagrant@base32-4gb-ubuntu1404:~$ sudo visudo
「/etc/sudoer」の以下の行を変更する。
%sudo ALL=(ALL:ALL) ALL ↓ %sudo ALL=(ALL) NOPASSWD:ALL
変更後はこうなる。
vagrant@base32-4gb-ubuntu1404:~$ sudo cat /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command #%sudo ALL=(ALL:ALL) ALL %sudo ALL=(ALL) NOPASSWD:ALL # See sudoers(5) for more information on "#include" directives: #includedir /etc/sudoers.d vagrant@base32-4gb-ubuntu1404:~$
変更後、一度ログアウトし、再接続後にパスワード無しでsudoできる事を確認する。
~ 07:12:34 zow$ ssh vagrant@127.0.0.1 -p 2222 vagrant@127.0.0.1's password: Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic i686) * Documentation: https://help.ubuntu.com/ System information as of Sat Jan 31 06:58:36 JST 2015 System load: 0.0 Processes: 65 Usage of /: 30.6% of 3.38GB Users logged in: 1 Memory usage: 6% IP address for eth0: 10.0.2.15 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ 0 packages can be updated. 0 updates are security updates. Last login: Sat Jan 31 06:58:36 2015 from 10.0.2.2 vagrant@base32-4gb-ubuntu1404:~$ sudo -s root@base32-4gb-ubuntu1404:~#
ssh設定
vagrantユーザ用の鍵が用意されているので、それを設定しておく。
鍵はこちら
鍵格納用のディレクトリを作成する。
vagrant@base32-4gb-ubuntu1404:~$ mkdir ~/.ssh vagrant@base32-4gb-ubuntu1404:~$ ls -la ~/ |grep .ssh drwxrwxr-x 2 vagrant vagrant 4096 1月 31 07:16 .ssh vagrant@base32-4gb-ubuntu1404:~$ chmod 0700 ~/.ssh vagrant@base32-4gb-ubuntu1404:~$ ls -la ~/ |grep .ssh drwx------ 2 vagrant vagrant 4096 1月 31 07:16 .ssh vagrant@base32-4gb-ubuntu1404:~$
次に鍵格納用のファイルを作成する。
vagrantユーザ用の公開鍵をDLし、リネームして使う。
公開鍵は以下URLからDL出来る。
https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
vagrant@base32-4gb-ubuntu1404:~$ cd ~/.ssh vagrant@base32-4gb-ubuntu1404:~/.ssh$ ls -la 合計 8 drwx------ 2 vagrant vagrant 4096 1月 31 07:16 . drwxr-xr-x 4 vagrant vagrant 4096 1月 31 07:16 .. vagrant@base32-4gb-ubuntu1404:~/.ssh$ wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub --2015-01-31 07:18:52-- https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub raw.github.com (raw.github.com) をDNSに問いあわせています... 103.245.222.133 raw.github.com (raw.github.com)|103.245.222.133|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 301 Moved Permanently 場所: https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub [続く] --2015-01-31 07:18:55-- https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub raw.githubusercontent.com (raw.githubusercontent.com) をDNSに問いあわせています... 103.245.222.133 raw.githubusercontent.com (raw.githubusercontent.com)|103.245.222.133|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 409 [text/plain] `vagrant.pub' に保存中 100%[======================================>] 409 --.-K/s 時間 0s 2015-01-31 07:18:55 (8.24 MB/s) - `vagrant.pub' へ保存完了 [409/409] vagrant@base32-4gb-ubuntu1404:~/.ssh$ ls -la 合計 12 drwx------ 2 vagrant vagrant 4096 1月 31 07:18 . drwxr-xr-x 4 vagrant vagrant 4096 1月 31 07:16 .. -rw-rw-r-- 1 vagrant vagrant 409 1月 31 07:18 vagrant.pub vagrant@base32-4gb-ubuntu1404:~/.ssh$ mv vagrant.pub authorized_keys vagrant@base32-4gb-ubuntu1404:~/.ssh$ ls -la 合計 12 drwx------ 2 vagrant vagrant 4096 1月 31 07:21 . drwxr-xr-x 4 vagrant vagrant 4096 1月 31 07:16 .. -rw-rw-r-- 1 vagrant vagrant 409 1月 31 07:18 authorized_keys vagrant@base32-4gb-ubuntu1404:~/.ssh$ chmod 0600 authorized_keys vagrant@base32-4gb-ubuntu1404:~/.ssh$ ls -la 合計 12 drwx------ 2 vagrant vagrant 4096 1月 31 07:21 . drwxr-xr-x 4 vagrant vagrant 4096 1月 31 07:16 .. -rw------- 1 vagrant vagrant 409 1月 31 07:18 authorized_keys vagrant@base32-4gb-ubuntu1404:~/.ssh$
システム設定
sshd設定
ssh接続時にdns参照させるのを防ぐ為、以下設定を「/etc/ssh/sshd_config」に追記する。
UseDNS no
設定後はこうなる。
vagrant@base32-4gb-ubuntu1404:~$ cat /etc/ssh/sshd_config # Package generated configuration file # See the sshd_config(5) manpage for details # What ports, IPs and protocols we listen for Port 22 # Use these options to restrict which interfaces/protocols sshd will bind to #ListenAddress :: #ListenAddress 0.0.0.0 Protocol 2 # HostKeys for protocol version 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key #Privilege Separation is turned on for security UsePrivilegeSeparation yes # Lifetime and size of ephemeral version 1 server key KeyRegenerationInterval 3600 ServerKeyBits 1024 # Logging SyslogFacility AUTH LogLevel INFO # Authentication: LoginGraceTime 120 PermitRootLogin without-password StrictModes yes RSAAuthentication yes PubkeyAuthentication yes #AuthorizedKeysFile %h/.ssh/authorized_keys # Don't read the user's ~/.rhosts and ~/.shosts files IgnoreRhosts yes # For this to work you will also need host keys in /etc/ssh_known_hosts RhostsRSAAuthentication no # similar for protocol version 2 HostbasedAuthentication no # Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication #IgnoreUserKnownHosts yes # To enable empty passwords, change to yes (NOT RECOMMENDED) PermitEmptyPasswords no # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Change to no to disable tunnelled clear text passwords #PasswordAuthentication yes # Kerberos options #KerberosAuthentication no #KerberosGetAFSToken no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes #UseLogin no #MaxStartups 10:30:60 #Banner /etc/issue.net # Allow client to pass locale environment variables AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. UsePAM yes UseDNS no vagrant@base32-4gb-ubuntu1404:~$
設定変更後にsshdを再起動しておく。
vagrant@base32-4gb-ubuntu1404:~$ sudo service ssh restart ssh stop/waiting ssh start/running, process 1353 vagrant@base32-4gb-ubuntu1404:~$
ビルドツールインストール
コンパイラ等のビルドツールをインストールしておく。
vagrant@base32-4gb-ubuntu1404:~$ sudo apt-get install linux-headers-generic build-essential dkms パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 linux-headers-generic は既に最新バージョンです。 以下の特別パッケージがインストールされます: binutils cpp cpp-4.8 dpkg-dev fakeroot g++ g++-4.8 gcc gcc-4.8 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan0 libatomic1 libc-dev-bin libc6-dev libcloog-isl4 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-4.8-dev libgmp10 libgomp1 libisl10 libitm1 libmpc3 libmpfr4 libquadmath0 libstdc++-4.8-dev linux-libc-dev make manpages-dev 提案パッケージ: binutils-doc cpp-doc gcc-4.8-locales debhelper debian-keyring g++-multilib g++-4.8-multilib gcc-4.8-doc libstdc++6-4.8-dbg gcc-multilib autoconf automake1.9 libtool flex bison gdb gcc-doc gcc-4.8-multilib libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan0-dbg libtsan0-dbg libbacktrace1-dbg libquadmath0-dbg binutils-gold glibc-doc libstdc++-4.8-doc make-doc 以下のパッケージが新たにインストールされます: binutils build-essential cpp cpp-4.8 dkms dpkg-dev fakeroot g++ g++-4.8 gcc gcc-4.8 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan0 libatomic1 libc-dev-bin libc6-dev libcloog-isl4 libdpkg-perl libfakeroot libfile-fcntllock-perl libgcc-4.8-dev libgmp10 libgomp1 libisl10 libitm1 libmpc3 libmpfr4 libquadmath0 libstdc++-4.8-dev linux-libc-dev make manpages-dev アップグレード: 0 個、新規インストール: 34 個、削除: 0 個、保留: 0 個。 28.0 MB のアーカイブを取得する必要があります。 この操作後に追加で 97.3 MB のディスク容量が消費されます。 …
共有ディレクトリ設定
共有ディレクトリを使用出来るようにする為、「VBoxGuestAdditions」を公式からDLして「VBoxLinuxAdditions」をインストールする。
http://download.virtualbox.org/virtualbox/
使用しているVirtualboxのバージョンに合わせた物をゲストOS内からwgetでDLし(今回は4.3.20)、マウントする。
vagrant@base32-4gb-ubuntu1404:~$ cd /tmp vagrant@base32-4gb-ubuntu1404:/tmp$ wget http://download.virtualbox.org/virtualbox/4.3.20/VBoxGuestAdditions_4.3.20.iso --2015-01-31 07:34:04-- http://download.virtualbox.org/virtualbox/4.3.20/VBoxGuestAdditions_4.3.20.iso download.virtualbox.org (download.virtualbox.org) をDNSに問いあわせています... 137.254.120.26 download.virtualbox.org (download.virtualbox.org)|137.254.120.26|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 Moved Temporarily 場所: http://dlc-cdn.sun.com/virtualbox/4.3.20/VBoxGuestAdditions_4.3.20.iso [続く] --2015-01-31 07:34:06-- http://dlc-cdn.sun.com/virtualbox/4.3.20/VBoxGuestAdditions_4.3.20.iso dlc-cdn.sun.com (dlc-cdn.sun.com) をDNSに問いあわせています... 72.246.190.66, 72.246.190.67 dlc-cdn.sun.com (dlc-cdn.sun.com)|72.246.190.66|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 58343424 (56M) [application/octet-stream] `VBoxGuestAdditions_4.3.20.iso' に保存中 100%[======================================>] 58,343,424 3.26MB/s 時間 16s 2015-01-31 07:34:22 (3.52 MB/s) - `VBoxGuestAdditions_4.3.20.iso' へ保存完了 [58343424/58343424] vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 56976 -rw-rw-r-- 1 vagrant vagrant 58343424 11月 21 23:01 VBoxGuestAdditions_4.3.20.iso vagrant@base32-4gb-ubuntu1404:/tmp$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 3545824 1141960 2204032 35% / none 4 0 4 0% /sys/fs/cgroup udev 243932 4 243928 1% /dev tmpfs 50720 368 50352 1% /run none 5120 0 5120 0% /run/lock none 253600 0 253600 0% /run/shm none 102400 0 102400 0% /run/user vagrant@base32-4gb-ubuntu1404:/tmp$ vagrant@base32-4gb-ubuntu1404:/tmp$ sudo mount -t iso9660 /tmp/VBoxGuestAdditions_4.3.20.iso /mnt mount: ブロックデバイス /tmp/VBoxGuestAdditions_4.3.20.iso は書き込み禁止です、読込み専用でマウントします vagrant@base32-4gb-ubuntu1404:/tmp$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 3545824 1141960 2204032 35% / none 4 0 4 0% /sys/fs/cgroup udev 243932 4 243928 1% /dev tmpfs 50720 368 50352 1% /run none 5120 0 5120 0% /run/lock none 253600 0 253600 0% /run/shm none 102400 0 102400 0% /run/user /dev/loop1 56976 56976 0 100% /mnt vagrant@base32-4gb-ubuntu1404:/tmp$
/mntにマウントされたので、そこにある「VBoxLinuxAdditions.run」を実行する。
vagrant@base32-4gb-ubuntu1404:/tmp$ cd /mnt/ vagrant@base32-4gb-ubuntu1404:/mnt$ ls -l 合計 50808 dr-xr-xr-x 2 root root 2048 11月 21 23:01 32Bit dr-xr-xr-x 2 root root 2048 11月 21 23:01 64Bit -r-xr-xr-x 1 root root 647 9月 12 21:10 AUTORUN.INF dr-xr-xr-x 2 root root 2048 11月 21 23:01 OS2 -r-xr-xr-x 1 root root 7146957 11月 21 23:58 VBoxLinuxAdditions.run -r-xr-xr-x 1 root root 16434176 11月 21 23:59 VBoxSolarisAdditions.pkg -r-xr-xr-x 1 root root 17356976 11月 22 00:00 VBoxWindowsAdditions-amd64.exe -r-xr-xr-x 1 root root 10754048 11月 21 23:57 VBoxWindowsAdditions-x86.exe -r-xr-xr-x 1 root root 312384 11月 21 23:56 VBoxWindowsAdditions.exe -r-xr-xr-x 1 root root 6966 11月 21 23:57 autorun.sh dr-xr-xr-x 2 root root 2048 11月 21 23:01 cert -r-xr-xr-x 1 root root 5523 11月 21 23:57 runasroot.sh vagrant@base32-4gb-ubuntu1404:/mnt$ sudo ./VBoxLinuxAdditions.run Verifying archive integrity... All good. Uncompressing VirtualBox 4.3.20 Guest Additions for Linux............ VirtualBox Guest Additions installer Removing installed version 4.3.20 of VirtualBox Guest Additions... Copying additional installer modules ... Installing additional modules ... Removing existing VirtualBox DKMS kernel modules ...done. Removing existing VirtualBox non-DKMS kernel modules ...done. Building the VirtualBox Guest Additions kernel modules ...done. Doing non-kernel setup of the Guest Additions ...done. Starting the VirtualBox Guest Additions ...done. Installing the Window System drivers Could not find the X.Org or XFree86 Window System, skipping. vagrant@base32-4gb-ubuntu1404:/mnt$
実行後、使用したCDイメージをアンマウントしてから削除する。
vagrant@base32-4gb-ubuntu1404:/mnt$ cd /tmp vagrant@base32-4gb-ubuntu1404:/tmp$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 3545824 1290600 2055392 39% / none 4 0 4 0% /sys/fs/cgroup udev 243932 4 243928 1% /dev tmpfs 50720 384 50336 1% /run none 5120 0 5120 0% /run/lock none 253600 0 253600 0% /run/shm none 102400 0 102400 0% /run/user /dev/loop1 56976 56976 0 100% /mnt vagrant@base32-4gb-ubuntu1404:/tmp$ sudo umount /mnt vagrant@base32-4gb-ubuntu1404:/tmp$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 3545824 1290608 2055384 39% / none 4 0 4 0% /sys/fs/cgroup udev 243932 4 243928 1% /dev tmpfs 50720 384 50336 1% /run none 5120 0 5120 0% /run/lock none 253600 0 253600 0% /run/shm none 102400 0 102400 0% /run/user vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 56980 -rw-rw-r-- 1 vagrant vagrant 58343424 11月 21 23:01 VBoxGuestAdditions_4.3.20.iso vagrant@base32-4gb-ubuntu1404:/tmp$ rm -f VBoxGuestAdditions_4.3.20.iso vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 0 vagrant@base32-4gb-ubuntu1404:/tmp$
vboxaddのセットアップを実行し、共有ディレクトリを設定する。
vagrant@base32-4gb-ubuntu1404:/tmp$ sudo /etc/init.d/vboxadd setup Removing existing VirtualBox DKMS kernel modules ...done. Removing existing VirtualBox non-DKMS kernel modules ...done. Building the VirtualBox Guest Additions kernel modules ...done. Doing non-kernel setup of the Guest Additions ...done. You should restart your guest to make sure the new modules are actually used vagrant@base32-4gb-ubuntu1404:/tmp$
Vagrantパッケージ作成
掃除
ゲストOSのセットアップは終わったので、綺麗にしておく。
vagrant@base32-4gb-ubuntu1404:~$ sudo apt-get autoremove パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。 vagrant@base32-4gb-ubuntu1404:~$ sudo apt-get clean vagrant@base32-4gb-ubuntu1404:~$
最後にフラグメントを解消してやる
vagrant@base32-4gb-ubuntu1404:~$ cd /tmp vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 0 vagrant@base32-4gb-ubuntu1404:/tmp$ dd if=/dev/zero of=/tmp/ZERO bs=1M dd: `/tmp/ZERO' の書き込みエラー: デバイスに空き領域がありません 2129+0 レコード入力 2128+0 レコード出力 2232172544 バイト (2.2 GB) コピーされました、 6.59424 秒、 339 MB/秒 vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 2179864 -rw-rw-r-- 1 vagrant vagrant 2232172544 1月 31 07:55 ZERO vagrant@base32-4gb-ubuntu1404:/tmp$ rm /tmp/ZERO vagrant@base32-4gb-ubuntu1404:/tmp$ ls -l 合計 0 vagrant@base32-4gb-ubuntu1404:/tmp$
シャットダウンする。
vagrant@base32-4gb-ubuntu1404:/tmp$ sudo shutdown -h now vagrant@base32-4gb-ubuntu1404:/tmp$ vagrant@base32-4gb-ubuntu1404 からのブロードキャスト・メッセージ (/dev/pts/0) at 7:57 ... The system is going down for halt NOW! Connection to 127.0.0.1 closed by remote host. Connection to 127.0.0.1 closed. ~ 07:57:26 zow$
ホストOSでbase boxを作成する。
base32_4gb_ubuntu1404 08:04:47 zow$ ls -l total 3473440 drwx------ 4 zow staff 136 1 31 06:53 Logs -rw------- 1 zow staff 8167 1 31 07:57 base32_4gb_ubuntu1404.vbox -rw------- 1 zow staff 7402 1 31 07:57 base32_4gb_ubuntu1404.vbox-prev -rw------- 1 zow staff 1778384896 1 31 07:57 base32_4gb_ubuntu1404.vdi base32_4gb_ubuntu1404 08:04:49 zow$ vagrant package --base base32_4gb_ubuntu1404 ==> base32_4gb_ubuntu1404: Clearing any previously set forwarded ports... ==> base32_4gb_ubuntu1404: Exporting VM... ==> base32_4gb_ubuntu1404: Compressing package to: /Users/zow/VirtualBox VMs/base32_4gb_ubuntu1404/package.box base32_4gb_ubuntu1404 08:07:05 zow$ ls -l total 4463072 drwx------ 4 zow staff 136 1 31 06:53 Logs -rw------- 1 zow staff 8047 1 31 08:05 base32_4gb_ubuntu1404.vbox -rw------- 1 zow staff 8167 1 31 07:57 base32_4gb_ubuntu1404.vbox-prev -rw------- 1 zow staff 1778384896 1 31 07:57 base32_4gb_ubuntu1404.vdi -rw-r--r-- 1 zow staff 506689293 1 31 08:07 package.box base32_4gb_ubuntu1404 08:07:34 zow$
Box登録
作成したパッケージを登録する。
base32_4gb_ubuntu1404 08:10:58 zow$ vagrant box add base32_4gb_ubuntu1404 package.box ==> box: Adding box 'base32_4gb_ubuntu1404' (v0) for provider: box: Downloading: file:///Users/zow/VirtualBox%20VMs/base32_4gb_ubuntu1404/package.box ==> box: Successfully added box 'base32_4gb_ubuntu1404' (v0) for 'virtualbox'! base32_4gb_ubuntu1404 08:12:01 zow$
登録されていることを確認。
virtualbox 08:14:42 zow$ vagrant box list base32_4gb_ubuntu1404 (virtualbox, 0) virtualbox 08:14:49 zow$
確認
仮想環境を作ってみる。
~ 08:20:54 zow$ mkdir -p ~/dev/vagrant/vagrant_test ~ 08:21:00 zow$ cd ~/dev/vagrant/vagrant_test/ vagrant_test 08:21:10 zow$ vagrant init base32_4gb_ubuntu1404 A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. vagrant_test 08:21:53 zow$ ls -l total 8 -rw-r--r-- 1 zow staff 3033 1 31 08:21 Vagrantfile vagrant_test 08:22:21 zow$ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'base32_4gb_ubuntu1404'... ==> default: Matching MAC address for NAT networking... ==> default: Setting the name of the VM: vagrant_test_default_1422660173796_41835 ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... default: Removing insecure key from the guest if its present... default: Key inserted! Disconnecting and reconnecting using new SSH key... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... ==> default: Mounting shared folders... default: /vagrant => /Users/zow/dev/vagrant/vagrant_test vagrant_test 08:23:14 zow$
正常に起動した。
ssh接続する。
vagrant_test 08:24:07 zow$ vagrant ssh Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-44-generic i686) * Documentation: https://help.ubuntu.com/ System information as of Sat Jan 31 08:23:11 JST 2015 System load: 0.22 Processes: 76 Usage of /: 32.6% of 3.38GB Users logged in: 0 Memory usage: 6% IP address for eth0: 10.0.2.15 Swap usage: 0% Graph this data and manage this system at: https://landscape.canonical.com/ Last login: Sat Jan 31 07:13:31 2015 from 10.0.2.2 vagrant@base32-4gb-ubuntu1404:~$ cd /vagrant/ vagrant@base32-4gb-ubuntu1404:/vagrant$ ls -l 合計 4 -rw-r--r-- 1 vagrant vagrant 3033 1月 31 08:21 Vagrantfile vagrant@base32-4gb-ubuntu1404:/vagrant$
共有ディレクトリも問題なく使える。