Tenderloin is a tool for building and distributing virtualized development environments.
It is based on Vagrant, specifically the 0.1.4 release. This was the simplest, and provided a good starting point
It is designed to use VMWare Fusion as the underlying provider. It has only been tested with Version 5. In theory this should be adaptable easily to VMWare workstation on other platforms, by updating the path to vmrun/the DHCP config.
- Shared folders
- Provisioning via command or script
- Imports Vagrant boxes
- Sync data via rsync (Allows target VMs to not have tools)
gem install tenderloin
To build your first virtual environment:
loin init # Warning! I'm 2gb's and un-optimized loin box add base http://s3.lstoll.net/tenderloin/precise64.box loin up
The file describing your VM is called 'Tenderfile', but you can optionally change this with
the -f flag, to allow multiple VM descriptions in the same place, e.g
loin up -f esxi.loin
Using Vagrant Boxes.
You can reference vagrant boxes directly, and the importer will convert them to native VMWare. The imported VM won't have additions installed, so you won't be able to use shared folders.
Provisioning is either via a shell script, or by launching a command directly. Chef and Puppet provisioning isn't natively supported - if you wish to use these you will need to write your own launcher script.
You can also set up paths to rsync using the provisioner, these wil be synced with --delete before the proisioning script/command runs. This is useful for machines that don't have the additions installed, and avoids using shared folders
You can view the template to see all available options.
This project is currently still in a pretty raw state. It is a quick hack to see how it would work, and to directly achieve a goal. The tests are broken, and the code might still be rough. I am currently using it on a daily basis though, so it's definitely usable.
Building base boxes
Note: Veewee supports building bases boxes with VMWare. The VMDK from this can be used in a Tenderloin box. More automation around this coming soon!
Currently base boxes are built manually. The process:
- Create image in Fusion
- Set user and password to 'tenderloin'
- Set sudo to not prompt for password
- Install VMWare additions
Ensure you have a single .vmdk disk. If not, convert with:
/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -r Virtual\ Disk.vmdk -t 0 precise64.vmdk
and then edit the vmx to point to this.
Compress and shrink the disk
/Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -d precise64.vmdk /Applications/VMware\ Fusion.app/Contents/Library/vmware-vdiskmanager -k precise64.vmdk
Create a Tenderfile. Example:
Tenderloin::Config.run do |config| config.vm.box_vmx = "precise64.vmx" end
Tar them up as a .box
tar -cvf precise64.box precise64.vmx Tenderfile precise64.vmdk