🟢 Stable | LXC provider for Vagrant (up-to-date & maintained)
Find a file
2013-03-03 03:22:44 -03:00
bin Vendorize vagrant 2013-03-02 20:36:06 -03:00
boxes/ubuntu-cloud Change ubuntu-cloud lxc template to accept a --cache-path argument 2013-03-02 23:13:15 -03:00
example Allow setting container hostname from Vagrantfile 2013-03-03 03:21:33 -03:00
lib Graceful container shutdown 2013-03-03 03:22:44 -03:00
locales lxc-create: check 2013-03-01 21:52:13 -03:00
spec Move action classes into their own files 2013-03-03 02:24:05 -03:00
spike 💣 spike specs 2013-03-02 23:47:54 -03:00
tasks Download ubuntu-cloud tarball before building it 2013-03-02 23:14:08 -03:00
vendor Update bundled vagrant 2013-03-03 01:52:32 -03:00
.gitignore Make explicit that the Vagrantfile is meant to be used for development 2013-03-02 22:46:24 -03:00
.gitmodules Vendorize vagrant 2013-03-02 20:36:06 -03:00
.rspec Not so initial commit 2013-02-25 02:04:31 -03:00
.vimrc Not so initial commit 2013-02-25 02:04:31 -03:00
config.yml.sample Not so initial commit 2013-02-25 02:04:31 -03:00
Gemfile Vendorize vagrant 2013-03-02 20:36:06 -03:00
Gemfile.lock Vendorize vagrant 2013-03-02 20:36:06 -03:00
Guardfile Its now safe to run rake and guard from outside the dev box 2013-03-02 20:39:27 -03:00
LICENSE.txt Gem boilerplate 2013-02-25 20:09:32 -03:00
Rakefile Enable gem tasks 2013-03-02 21:36:17 -03:00
README.md README tweaks 2013-03-03 00:59:45 -03:00
setup-vagrant-dev-box Fix setup dev box script 2013-03-03 00:21:27 -03:00
vagrant-lxc.gemspec Update gemspec 2013-03-02 20:40:51 -03:00
Vagrantfile.dev Move action classes into their own files 2013-03-03 02:24:05 -03:00

vagrant-lxc

Highly experimental, soon to come, Linux Containers support for the unreleased Vagrant 1.1.

Please refer to the closed issues to find out whats currently supported.

WARNING

Please keep in mind that this is not even alpha software and things might go wrong.

Dependencies

Just LXC and bsdtar as of now, which on Ubuntu 12.10 means:

sudo apt-get install lxc bsdtar

Current limitations that I can remember

  • Ruby >= 1.9.3 only, patches for 1.8.7 are welcome
  • There is no support for setting a static IP. I'm using LXC's built in dns server to determine containers' IPs
  • No provisioning yet
  • sudos
  • plus a bunch of other core features

Usage

For now you'll need to install the gem from sources:

git clone git://github.com/fgrehm/vagrant-lxc.git --recurse
cd vagrant-lxc
bundle install
bundle exec rake install
bundle exec rake boxes:build:ubuntu-cloud
vagrant-lxc box add ubuntu-cloud boxes/output/ubuntu-cloud.box

Since Vagrant 1.1 has not been released yet and to avoid messing up with you current Vagrant installation, I've vendored Vagrant's sources from the master and made it available from vagrant-lxc. So after vagrant-lxc gets installed, create a Vagrantfile like the one below and run vagrant-lxc up --provider=lxc:

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu-cloud"
  config.vm.provider :lxc do |lxc|
    # ... some lxc options that will come here soon ...
  end
end

If you don't trust me and believe that it will mess up with your current Vagrant installation and / or are afraid that something might go wrong with your machine, fire up the same Vagrant VirtualBox machine I'm using for development to try things out and do the same as above. That might also get you up and running if you are working on a mac ;)

Development

If you know what you'll be doing and want to develop from your physical machine, just sing that same old song:

git clone git://github.com/fgrehm/vagrant-lxc.git --recurse
cd vagrant-lxc
bundle install
bundle exec rake boxes:build:ubuntu-cloud
bundle exec rake # to run all specs

Using VirtualBox for development

I've also prepared a Vagrant 1.0 VirtualBox machine for development that you can get up and running with the setup-vagrant-dev-box script. Feel free to use it :)

cp Vagrantfile.dev Vagrantfile
./setup-vagrant-dev-box
vagrant ssh

NOTE: setup-vagrant-dev-box takes around 10 minutes on a 15mb connection after the base vagrant box and ubuntu lxc cloud img have been downloaded

Protip

If you want to find out more about what's going on under the hood, prepend VAGRANT_LOG=debug to your vagrant-lxc commands like:

VAGRANT_LOG=debug vagrant-lxc up

Help! I've accidentaly ran vagrant-lxc on a Vagrant 1.0 project and I can't use it anymore

That happened to me before so here's how to recover:

rm -rf .vagrant
mv .vagrant.v1* .vagrant

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request