Funtoo Virtual Machine Quickstart
As an alternative to the Funtoo Linux Installation, you can get started quickly with Funtoo as a virtual machine. An open source tool called VeeWee automates the creation of VirtualBox virtual machines just like Funtoo's Metro creates the latest stage3 tarballs of a Linux machine. So in effect, a virtual machine can be created from source using all open source tools and run in an open source Virtual Machine Manager (VMM). Once created, the VeeWee virtual machines can be automated with another open source tool Vagrant, which can create/start/stop/delete machines as you wish. Once you have all the tools setup its really quite addictive experimenting with different configurations and setups in a very time efficient manner.
The Funtoo project will be experimenting with virtual machines as a delivery mechanism to users.
You will need to install VirtualBox, Ruby and Gems to get going. Recommend considering Ruby Version Manager instead of portage which will install all your Ruby needs into /opt/local/rvm or your home directory depending on if you are running as root or as a regular user. We will be posting machines on the Funtoo mirrors. Pick a virtual machine off a nearby mirror. The virtual machines are created from upstream current and stable 64 bit stage 3 tarballs. Put the URL of the machine (file ending in the .box extension) that you would like to experiment with into these easy commands.
# echo "app-emulation/virtualbox extensions" >> /etc/portage/package.use
# emerge vagrant
# modprobe vboxdrv; modprobe vboxnetadp; modprobe vboxnetflt
# vagrant box add funtoo http://ftp.osuosl.org/pub/funtoo/funtoo-current/vagrant/x86-64bit/vagrant-generic_64-funtoo-current-2012-01-26.box
# vagrant init
# vagrant up
# vagrant ssh
# sudo su -
The amount of tools needed is a bit large so a quick summary is given below. The first few are required to get started, but you quickly end up looking at Puppet, Chef and other tools if the number of VMs get large. Puppet and Chef aren't needed to get started, but are listed because VeeWee generated virtual machines normally have them preinstalled to push applications into freshly created virtual machines. The DevOps ToolChain email list is a good place to get ideas on distributed systems processes, automation and tooling as the toolchain implementation can get quites complicated depending on your goals.
- Metro Tool used to build from source just enough Linux to create a Linux Funtoo OS
- VirtualBox An open source Virtual Machine Manager (VMM) developed by Sun/Oracle which has several open source DevOps tools created around it for distributed Virtual Machine (VM) automation.
- VeeWee Tool used to automate the booting and execution of installation CDROM/ISO images. No need to watch Anaconda run to create Fedora boxes! VeeWee, while a separate project, is a subcommand of Vagrant. The Funtoo creation is currently merged into the VeeWee codebase, but not currently in a released GEM. (Remark: Niklaus Giger had some problems with the templates and developed some fixes)
- Vagrant A tool which automated create/start/stop/delete operations of VirtualBox VMs. VeeWee is needed for creating custom machine types, but there are lots of pre-created machine types in existence including Gentoo. The Funtoo VeeWee scripts were derived from the Gentoo scripts.
- Puppet is one of two distributed configuration management tools that are pre-installed by convention on VeeWee generated virtual machines. There are enterprise and open source versions of Puppet. Your Funtoo VirtualBox will have the open source Puppet installed by the Ruby Version Manager (not portage) as Gems and Portage fight each other (like CPAN and portage) and its best for now to keep these things separated. The open source version of Puppet is typically distributed as a Ruby Gem.
- Chef is the second distributed configuration management tool that is pre-installed by convention on a VeeWee generated Funtoo virtual machine. Chef also has open source and enterprise versions. Your Funtoo VirtualBox will have the open source Chef installed by the Ruby Version Manager (not portage) as Ruby and Portage fight eachother and its best for now to keep these things separated. The open source Chef is typically distributed as a Ruby Gem.
The virtual machine is shipped built ready to script, but also wide open for attack. The root and vagrant account's password is vagrant and the vagrant account has sudo access. Also, there is a private key in the vagrant account that is well known. So don't put these boxes on the net without seriously hardening the machine's security or you will just be adding to the internet bot net problems.
While the virtual machine was created with veewee for VirtualBox, there is no reason to restrict yourself to the VirtualBox virtual machine manager. The ".box" file is a simple tarball. In the tarball is a "box-disk1.vmdk" file which is a virtual machine disk image that is useable to the VirtualBox VMM. Untaring the disk image into another VMM's virtual machine is certainly a doable thing.
Also, the vagrant and veewee upstream developers are looking into rewriting their code to work with other VMM implementions.