UPDATE: this has been made slightly more official by way of turning it into a repo: https://github.com/sax/vagrant-smartos-packager
Notes:
- This will create files on the local disk
- You'll probably want to create and cd into a working directory before doing any of this
- This is very much a work in progress. This gist is to capture lots of tiny changes in code, without managing the horrible git history that would ensue in a real git repo. Once this works to completion, it's going into a github repo.
On local machine, download the latest SmartOS platform image and turn it into a virtualbox image:
curl -k https://gist.githubusercontent.com/sax/9138190/raw/mksmartvm | bash -s
When that spins up, set the network configuration and zone information as the defaults. When the prompt asks to create a root password, set it to vagrant
.
Now log in as root, and run the following:
curl -k https://gist.githubusercontent.com/sax/9138190/raw/prepare_global_zone
This will install a service that allows you to create and manage users in the global zone, with info persisted in /usbkey
. See the SmartOS wiki for more info.
Reboot the zone to ensure that the services added in the last step are loaded.
Now create a vagrant user:
curl -k https://gist.githubusercontent.com/sax/9138190/raw/prepare_gz_users
The vagrant user will be created with password vagrant
, root privileges (Primary Administrator) and a small profile with sudo
aliased to pfexec
.
Now shut down the VM using a graceful shutdown signal.
At this point you can package up the VM into a vagrant box.
vagrant package --base SmartOS-20140221T042147Z --output SmartOS-20140221T042147Z.box
vagrant box add SmartOS-20140221T042147Z SmartOS-20140221T042147Z.box
@bixu also: long term plan is to have vagrant spin up global zone, then use a vagrant plugin to install and connect to local zones. Probably doesn't actually need to mount anything in the global zone, so in the short term it may also be better to try to skip this step.
possibly using http://rubygems.org/gems/vagrant-smartos, or at least something inspired by and heavily drawn from it.