前回、VirtualBoxにゲストOSとしてMavericksを入れたので、それを使ってVagrant Boxを作ってみました。
もっとも、現在のところVirtualBoxにはMac OS向けのGuest Addonがないので中途半端なBoxしか作れませんでしたが、他のBoxを作るときの参考になるかもしれないので作業過程を示しておきます。
ゲストOS上での設定
Vagrantの公式ドキュメントにVagrantのBoxには最低限これだけはやっておけというものが書かれています。それを参考に次のようなことを行いました。
パッケージマネジャの導入
今回パッケージマネジャはhomebrew + homebrew-caskを入れました。場合によってはmacportsも入れればよいかも。なお、Homebrewを入れるとついでに、Command Line Toolsも入ります。
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" $ brew tap caskroom/cask && brew install brew-cask
VagrantでSSHするためのユーザ作成
ユーザvagrantをUsers & Groupsから追加しました。もちろんパスワードはvagrant
です。
SSHサーバ
SharingからRemote Loginをオンにし、ユーザvagrantでアクセスできるようにします。
ポートフォワーディングの設定はVagrantが自動で行うので不要です。
Vagrant向けのSSH鍵
ユーザvagrantで鍵を追加しておきます。
$ mkdir .ssh $ curl -k https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys $ chmod 0700 .ssh $ chmod 0600 .ssh/authorized_keys
パスワード不要のsudo
Vagrantがネットワーク設定とかするときに必要となりますので、visudo
で設定ファイルを開いたら、ファイル末尾に次の設定を追加しておきます。
vagrant ALL=(ALL) NOPASSWD: ALL
プロバイダ向けに必要なもの
プロバイダとは、ここではVirtualBoxのことを差し、Guest Addonを入れておくことなど (詳細は公式ドキュメントのVirtualBoxプロバイダ向けBoxの作成を参考のこと) が必要なものに当たります。
しかし、Mac OS X向けのGuest Addonがないので省略しました。
(必要なら) Chef, Puppetとか
Ansibleを使うつもりなので省略。
ディスク使用量を減らす
Monolingualで英語と日本語以外の不要な言語ファイルを消すだけで1.5GBくらい減らせます。
ちなみに、Monolingual最新版(1.5.10)はゲスト環境では動作しなかったので、1.4.5を使いました。
VirtualBoxでの設定の変更
FloppyやCD-ROMドライブはもはや不要なので切りましょう。また、Vagrant向けに特化するなら、USBやオーディオなど要らないものは切っておくとよいです。
Mavericks Boxの作成
先ほど設定したVMをベースに次のコマンドでVagrantのboxを作成します。--base
にはVirtualBoxのVM名を指定します。なお、15分くらいかかります。
$ vagrant package --output mavericks.box --base Mavericks ==> vagrant_mavericks: Clearing any previously set forwarded ports... ==> vagrant_mavericks: Exporting VM... ==> vagrant_mavericks: Compressing package to: /Users/safx/src/vagrant_mac/mavericks.box
完成したらboxをリストに追加しましょう。
$ vagrant box add mavericks mavericks.box ==> box: Adding box 'mavericks' (v0) for provider: box: Downloading: file:///Users/safx/src/vagrant_mac/mavericks.box ==> box: Successfully added box 'mavericks' (v0) for 'virtualbox'!
ちゃんと追加されました。
$ vagrant box list mavericks (virtualbox, 0) parallels/ubuntu-14.04 (parallels, 0.1.0) wmit/trusty64 (virtualbox, 0.1.0) yungsang/boot2docker (parallels, 0.8.3)
mavericks.boxの起動
あとは普通にvagrant
で起動するだけですが、vagrant up
では (Guest Addonを入れていないので) 共有フォルダを作れないというエラーが出てしまいました。
$ vagrant init mavericks 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 up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Importing base box 'marvericks'... ==> default: Matching MAC address for NAT networking... ==> 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: Warning: Connection timeout. Retrying... default: Warning: Connection timeout. Retrying... ==> default: Machine booted and ready! ==> default: Checking for guest additions in VM... default: No guest additions were detected on the base box for this VM! Guest default: additions are required for forwarded ports, shared folders, host only default: networking, and more. If SSH fails on this machine, please install default: the guest additions and repackage the box to continue. default: default: This is not an error message; everything may continue to work properly, default: in which case you may ignore this message. ==> default: Mounting shared folders... default: /vagrant => /Users/safx/src/vagrant_mac Vagrant attempted to execute the capability 'mount_virtualbox_shared_folder' on the detect guest OS 'darwin', but the guest doesn't support that capability. This capability is required for your configuration of Vagrant. Please either reconfigure Vagrant to avoid this capability or fix the issue by creating the capability.
ただし、vagrant ssh
は利用できました。
$ vagrant ssh Last login: Sat May 10 20:40:51 2014 safxdevs-MacBook-Pro:~ vagrant$ uname -a Darwin safxdevs-MacBook-Pro.local 13.1.0 Darwin Kernel Version 13.1.0: Wed Apr 2 23:52:02 PDT 2014; root:xnu-2422.92.1~2/RELEASE_X86_64 x86_64 safxdevs-MacBook-Pro:~ vagrant$ ls Desktop Documents Downloads Library Movies Music Pictures Public
おわりに
Virtualboxプロバイダ向けのMac OS X (10.9)のVagrant Boxを作ってみました。
Parallelsだとアドオン付きのBoxをすんなりと作れるのかもしれませんが、トライアル版の期限が過ぎたので試してません。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。