Difference between revisions of "Vagrant"

From ArchWiki
Jump to: navigation, search
m (vagrant-lxc: made the url unclickable)
(Installing Vagrant)
Line 19: Line 19:
  
 
Install {{Pkg|vagrant}} from the [[official repositories]].
 
Install {{Pkg|vagrant}} from the [[official repositories]].
 +
 +
If you want to use Vagrant cloud you will need to install {{AUR|vagrant-deb}} From The AUR.
 +
 +
It Looks as though the Vagrant cloud licence prevents the community version the [[official repositories]] use to package the login command.
  
 
== Plugins ==
 
== Plugins ==

Revision as of 00:42, 28 July 2014

Vagrant is a tool for managing and configuring virtualised development environments.

Vagrant has a concept of 'providers', which map to the virtualisation engine and its API. The most popular and well-supported provider is Virtualbox; plugins exist for libvirt, kvm, lxc, vmware and more.

Vagrant uses a mostly declarative Vagrantfile to define virtualised machines. A single Vagrantfile can define multiple machines.

See also Wikipedia:Vagrant.

Installing Vagrant

Install vagrant from the official repositories.

If you want to use Vagrant cloud you will need to install vagrant-debAUR From The AUR.

It Looks as though the Vagrant cloud licence prevents the community version the official repositories use to package the login command.

Plugins

Vagrant has a middleware architecture providing support for powerful plugins.

Some popular Vagrant plugins are available from the aur, such as vagrant-vbguestAUR. Other plugins can be installed with Vagrant's built-in plugin manager:

$ vagrant plugin install vagrant-vbguest

vagrant-kvm

This plugin supports KVM as the virtualisation provider.

Vagrant installs a self-contained rainbow environment in /opt which interacts with the system ruby in Arch in confusing ways. As of vagrant 1.4.3, this invocation will install vagrant-kvm successfully:

$ CONFIGURE_ARGS="with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib" vagrant plugin install vagrant-kvm

vagrant-lxc

First install lxc from the official repositories, then:

$ vagrant plugin install vagrant-lxc

Next, configure lxc and some systemd unit files per this comment. The plugin can now be used with a Vagrantfile like so:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure("2") do |config|

    config.vm.define "main" do |config|
        config.vm.box = 'http://bit.ly/vagrant-lxc-wheezy64-2013-10-23'

        config.vm.provider :lxc do |lxc|
            lxc.customize 'cgroup.memory.limit_in_bytes', '512M'
        end

        config.vm.provision :shell do |shell|
            shell.path = 'provision.sh'
        end
    end
end

The provision.sh file should be a shell script beside the Vagrantfile. Do whatever setup is appropriate; for example, to remove puppet, which is packaged in the above box:

rm /etc/apt/sources.list.d/puppetlabs.list
apt-get purge -y puppet facter hiera puppet-common puppetlabs-release ruby-rgen

Base Boxes for Vagrant

Here is a list of places to get all sorts of vagrant base boxes for different purposes: development, testing, or even production.

  • Opscode bento
    We all know what bento means in Japanese, right? In this case, they are NOT lunch boxes BUT extremely useful base boxes which can be used to test cookbooks or private chef (Chef Server and Client). Distributions included: Ubuntu Server, Debian, CentOS, Fedora and FreeBSD.
  • Vagrant Ubuntu Cloud Images
    It has been there since Jan, 2013. For some reason Canonical has NOT officially promoted it yet, may be still in beta. Remember these are vanilla images, NOT very useful without Chef or Puppet.