🟢 Stable | LXC provider for Vagrant (up-to-date & maintained)
Find a file
2013-11-06 21:06:25 -02:00
boxes Merge pull request #167 from avokhmin/openmandriva 2013-10-23 17:57:47 -07:00
development Install psmisc on dev vm 2013-11-06 01:10:07 -02:00
lib Remove unneeded .to_s 2013-11-06 21:06:25 -02:00
locales Better than a note on the readme is a warning for users about unsupported private / public networks :) 2013-11-06 20:40:08 -02:00
spec Respect Vagrantfile options to disable forwarded port 2013-11-06 21:01:21 -02:00
tasks 💣 old stuff 2013-09-19 01:41:02 -03:00
.gitignore Finish ubuntu box "build abstraction" 2013-04-21 22:23:49 -03:00
.rspec Not so initial commit 2013-02-25 02:04:31 -03:00
.travis.yml 2 failed attempts to run acceptance specs on travis, let just not worry about that for now 2013-04-21 16:58:21 -03:00
.vimrc Finish ubuntu box "build abstraction" 2013-04-21 22:23:49 -03:00
BOXES.md Docs about base boxes 2013-09-21 00:32:20 -03:00
CHANGELOG.md Respect Vagrantfile options to disable forwarded port 2013-11-06 21:01:21 -02:00
CONTRIBUTING.md Add link to Troubleshooting section of the wiki to CONTRIBUTING.md 2013-11-06 21:03:45 -02:00
Gemfile Update bundle 2013-11-06 00:59:11 -02:00
Gemfile.lock Update bundle 2013-11-06 00:59:11 -02:00
Guardfile Clean up Guardfile 2013-05-17 18:49:33 -03:00
LICENSE.txt Gem boilerplate 2013-02-25 20:09:32 -03:00
Rakefile Attempt to enable code coverage on travis 2013-04-12 18:37:38 -03:00
README.md Couple of tweaks to acceptance specs 2013-11-06 01:11:38 -02:00
vagrant-lxc.gemspec Add license to .gemspec 2013-07-21 22:51:29 -03:00

vagrant-lxc

Build Status Gem Version Code Climate Coverage Status

LXC provider for Vagrant 1.1+

This is a Vagrant plugin that allows it to control and provision Linux Containers as an alternative to the built in VirtualBox provider for Linux hosts.

Features / Limitations

  • Provides the same workflow as the Vagrant VirtualBox provider
  • Port forwarding via redir
  • Does not support public / private networks
  • Assumes you have a lxcbr0 bridge configured on your host similar to Ubuntu's built-in

Requirements

The plugin is known to work better and pretty much out of the box on Ubuntu 12.04+ hosts and installing the dependencies on it basically means a apt-get install lxc lxc-templates cgroup-lite redir and a apt-get update && apt-get dist-upgrade to upgrade the kernel. For Debian hosts you'll need to follow the instructions described on the Wiki.

Some manual steps are required to set up a Linode machine prior to using this plugin, please check the wiki for more information. Documentation on how to set things up for other distros are welcome :)

If you are on a Mac or Windows machine, you might want to have a look at this blog post for some ideas on how to set things up or check out this other repo for a set of Vagrant VirtualBox machines ready for vagrant-lxc usage.

NOTE: Some users have been experiencing networking issues and right now you might need to disable checksum offloading as described on this comment

Installation

vagrant plugin install vagrant-lxc

Usage

After installing, add a base box using any name you want, for example:

vagrant box add quantal64 http://bit.ly/vagrant-lxc-quantal64-2013-07-12

Then create a Vagrantfile that looks like the following, changing the box name to the one you've just added:

Vagrant.configure("2") do |config|
  config.vm.box = "quantal64"
end

And finally run vagrant up --provider=lxc.

If you are using Vagrant 1.2+ you can also set VAGRANT_DEFAULT_PROVIDER environmental variable to lxc in order to avoid typing --provider=lxc all the time.

Advanced configuration

If you want, you can modify container configurations from within your Vagrantfile using the provider block:

Vagrant.configure("2") do |config|
  config.vm.box = "quantal64"
  config.vm.provider :lxc do |lxc|
    # Same effect as as 'customize ["modifyvm", :id, "--memory", "1024"]' for VirtualBox
    lxc.customize 'cgroup.memory.limit_in_bytes', '1024M'
  end
end

vagrant-lxc will then write out lxc.cgroup.memory.limit_in_bytes='1024M' to the container config file (usually kept under /var/lib/lxc/<container>/config) prior to starting it.

For other configuration options, please check the lxc.conf manpages.

Avoiding sudo passwords

This plugin requires a lot of sudoing since user namespaces are not supported on mainstream kernels. Have a look at the Wiki to find out how to work around that specially if you are running an OS with sudo < 1.8.4 (like Ubuntu 12.04) as you might be affected by a bug.

Base boxes

Please check the wiki for a list of pre built base boxes and have a look at BOXES.md for more information on building your own.

More information

Please refer the wiki.

Problems / ideas?

Please review the Troubleshooting wiki page + known bugs list if you have a problem and feel free to use the issue tracker propose new functionality and / or report bugs.

Support

Support this project and others by fgrehm via gittip.

Support via Gittip

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

Bitdeli Badge