From 3b45b92d1a5533e7ce3e12da3cc6c476779582ec Mon Sep 17 00:00:00 2001 From: Fabio Rehm Date: Wed, 14 Jan 2015 21:44:28 -0200 Subject: [PATCH] v1.1.0 --- CHANGELOG.md | 2 +- Gemfile.lock | 2 +- README.md | 60 +++++++++++++++++++++++++------------- lib/vagrant-lxc/version.rb | 2 +- 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 454b6492..d757cff1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## [1.1.0](https://github.com/fgrehm/vagrant-lxc/compare/v1.0.1...master) (unreleased) +## [1.1.0](https://github.com/fgrehm/vagrant-lxc/compare/v1.0.1...1.1.0) (Jan 14, 2015) BACKWARDS INCOMPATIBILITIES: diff --git a/Gemfile.lock b/Gemfile.lock index e0535552..9b8e1474 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,7 +45,7 @@ GIT PATH remote: . specs: - vagrant-lxc (1.0.1) + vagrant-lxc (1.1.0) GEM remote: https://rubygems.org/ diff --git a/README.md b/README.md index 50334659..0f678628 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://travis-ci.org/fgrehm/vagrant-lxc.png?branch=master)](https://travis-ci.org/fgrehm/vagrant-lxc) [![Gem Version](https://badge.fury.io/rb/vagrant-lxc.png)](http://badge.fury.io/rb/vagrant-lxc) [![Code Climate](https://codeclimate.com/github/fgrehm/vagrant-lxc.png)](https://codeclimate.com/github/fgrehm/vagrant-lxc) [![Coverage Status](https://coveralls.io/repos/fgrehm/vagrant-lxc/badge.png?branch=master)](https://coveralls.io/r/fgrehm/vagrant-lxc) [![Gittip](http://img.shields.io/gittip/fgrehm.svg)](https://www.gittip.com/fgrehm/) [![Gitter chat](https://badges.gitter.im/fgrehm/vagrant-lxc.png)](https://gitter.im/fgrehm/vagrant-lxc) -[LXC](http://lxc.sourceforge.net/) provider for [Vagrant](http://www.vagrantup.com/) 1.1+ +[LXC](http://lxc.sourceforge.net/) provider for [Vagrant](http://www.vagrantup.com/) 1.6+ 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. Check out @@ -14,10 +14,11 @@ to see it in action. * Provides the same workflow as the Vagrant VirtualBox provider * Port forwarding via [`redir`](http://linux.die.net/man/1/redir) +* Private networking via [`pipework`](https://github.com/jpetazzo/pipework) ## Requirements -* [Vagrant 1.1+](http://www.vagrantup.com/downloads.html) +* [Vagrant 1.5+](http://www.vagrantup.com/downloads.html) (tested with 1.7.2) * lxc 0.7.5+ * `redir` (if you are planning to use port forwarding) * `brctl` (if you are planning to use private networks, on Ubuntu this means `apt-get install bridge-utils`) @@ -25,18 +26,14 @@ to see it in action. The plugin is known to work better and pretty much out of the box on Ubuntu 14.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](https://github.com/fgrehm/vagrant-lxc/wiki/Usage-on-debian-hosts) -and old lxc versions (like 0.7.5 shipped with Ubuntu 12.04 by default) might require -[additional configurations to work](#backingstore-options). +(older LXC versions like 0.7.5 shipped with Ubuntu 12.04 by default might require +[additional configurations to work](#backingstore-options)). For setting up other +types of hosts please have a look at the [Wiki](https://github.com/fgrehm/vagrant-lxc/wiki). If you are on a Mac or Windows machine, you might want to have a look at [this](http://the.taoofmac.com/space/HOWTO/Vagrant) blog post for some ideas on how to set things up or check out [this other repo](https://github.com/fgrehm/vagrant-lxc-vbox-hosts) 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](https://github.com/fgrehm/vagrant-lxc/issues/153#issuecomment-26441273)** - ## Installation @@ -52,23 +49,21 @@ vagrant init fgrehm/precise64-lxc vagrant up --provider=lxc ``` -_Set the `VAGRANT_DEFAULT_PROVIDER` environmental variable to `lxc` in order to -avoid typing `--provider=lxc` all the time._ - +_More information about skipping the `--provider` argument can be found at the +"DEFAULT PROVIDER" section of [Vagrant docs](https://docs.vagrantup.com/v2/providers/basic_usage.html)_ ## Base boxes -Base boxes can be found on [VagrantCloud](https://vagrantcloud.com/search?provider=lxc) +Base boxes can be found on [Atlas](https://atlas.hashicorp.com/boxes/search?provider=lxc) and some scripts to build your own are available at [fgrehm/vagrant-lxc-base-boxes](https://github.com/fgrehm/vagrant-lxc-base-boxes). If you want to build your own boxes, please have a look at [`BOXES.md`](https://github.com/fgrehm/vagrant-lxc/tree/master/BOXES.md) for more information. - ## Advanced configuration -If you want, you can modify container configurations from within your Vagrantfile -using the [provider block](http://docs.vagrantup.com/v2/providers/configuration.html): +You can modify container configurations from within your Vagrantfile using the +[provider block](http://docs.vagrantup.com/v2/providers/configuration.html): ```ruby Vagrant.configure("2") do |config| @@ -86,6 +81,28 @@ prior to starting it. For other configuration options, please check the [lxc.conf manpages](http://manpages.ubuntu.com/manpages/precise/man5/lxc.conf.5.html). +### Private Networks [EXPERIMENTAL] + +Starting with vagrant-lxc 1.1.0, there is some rudimentary support for configuring +[Private Networks](https://docs.vagrantup.com/v2/networking/private_network.html) +by leveraging the [pipework](https://github.com/jpetazzo/pipework) project. + +On its current state, there is a requirement for setting the bridge name that +will be created and will allow your machine to comunicate with the container + +For example: + +```ruby +Vagrant.configure("2") do |config| + config.vm.network "private_network", ip: "192.168.2.100", lxc__bridge_name: 'vlxcbr1' +end +``` + +Will create a new `veth` device for the container and will set up (or reuse) +a `vlxcbr1` bridge between your machine and the `veth` device. Once the last +vagrant-lxc container attached to the bridge gets `vagrant halt`ed, the plugin +will delete the bridge. + ### Container naming By default vagrant-lxc will attempt to generate a unique container name @@ -103,6 +120,9 @@ Vagrant.configure("2") do |config| end ``` +_Please note that there is a 64 chars limit and the container name will be +trimmed down to that to ensure we can always bring the container up. + ### Backingstore options Support for setting `lxc-create`'s backingstore option (`-B` and related) can be @@ -133,12 +153,12 @@ Vagrant.configure("2") do |config| end ``` -### Avoiding `sudo` passwords +## Avoiding `sudo` passwords This plugin requires **a lot** of `sudo`ing since [user namespaces](https://wiki.ubuntu.com/UserNamespace) -are not supported on mainstream kernels. To work around that, you can use the -`vagrant lxc sudoers` command which will create a file under `/etc/sudoers.d/vagrant-lxc-` -whitelisting all commands required by `vagrant-lxc` to run. +is not supported yet. To work around that, you can use the `vagrant lxc sudoers` +command which will create a file under `/etc/sudoers.d/vagrant-lxc` whitelisting +all commands required by `vagrant-lxc` to run. If you are interested on what will be generated by that command, please check [this code](lib/vagrant-lxc/command/sudoers.rb). diff --git a/lib/vagrant-lxc/version.rb b/lib/vagrant-lxc/version.rb index fb8107ac..0f75cc65 100644 --- a/lib/vagrant-lxc/version.rb +++ b/lib/vagrant-lxc/version.rb @@ -1,5 +1,5 @@ module Vagrant module LXC - VERSION = "1.0.1" + VERSION = "1.1.0" end end