Lots of README
This commit is contained in:
parent
49963b532d
commit
97476af450
1 changed files with 51 additions and 28 deletions
79
README.md
79
README.md
|
@ -9,28 +9,39 @@ to find out whats currently supported.
|
||||||
|
|
||||||
## WARNING
|
## WARNING
|
||||||
|
|
||||||
Please keep in mind that this is not even alpha software and things might go wrong.
|
Please keep in mind that although I'm already using this on my laptop, this is
|
||||||
|
"almost alpha" software and things might go wrong.
|
||||||
|
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
Just LXC and `bsdtar` as of now, which on Ubuntu 12.10 means:
|
LXC, `bsdtar` packages and a Kernel [higher than 3.5.0-17.28](#im-unable-to-restart-containers),
|
||||||
|
which on Ubuntu 12.10 means:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
sudo apt-get update && sudo apt-get dist-upgrade
|
||||||
sudo apt-get install lxc bsdtar
|
sudo apt-get install lxc bsdtar
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Current limitations that I can remember
|
## What is currently supported?
|
||||||
|
|
||||||
|
* Vagrant's `up`, `halt`, `reload`, `destroy`, and `ssh` commands
|
||||||
|
* Shared folders
|
||||||
|
* Provisioners
|
||||||
|
* Setting container's host name
|
||||||
|
* Host-only / private networking
|
||||||
|
|
||||||
|
|
||||||
|
## Current limitations
|
||||||
|
|
||||||
* Ruby >= 1.9.3 only, patches for 1.8.7 are welcome
|
* Ruby >= 1.9.3 only, patches for 1.8.7 are welcome
|
||||||
* There is no support for setting a static IP. I'm using
|
* A hell lot of `sudo`s
|
||||||
[LXC's built in dns server](lib/vagrant-lxc/container.rb#L100) to determine
|
* Only a [single box supported](boxes), I'm still [figuring out what should go
|
||||||
containers' IPs
|
on the .box file](https://github.com/fgrehm/vagrant-lxc/issues/4)
|
||||||
* `sudo`s
|
|
||||||
* only ubuntu cloudimg supported, I'm still [figuring out what should go on the .box](https://github.com/fgrehm/vagrant-lxc/issues/4)
|
|
||||||
* "[works](https://github.com/fgrehm/vagrant-lxc/issues/20) on [my machine](https://github.com/fgrehm/vagrant-lxc/issues/7)" (TM)
|
* "[works](https://github.com/fgrehm/vagrant-lxc/issues/20) on [my machine](https://github.com/fgrehm/vagrant-lxc/issues/7)" (TM)
|
||||||
* plus a bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
|
* + bunch of other [core features](https://github.com/fgrehm/vagrant-lxc/issues?labels=core&milestone=&page=1&state=open)
|
||||||
|
and a some known [bugs](https://github.com/fgrehm/vagrant-lxc/issues?labels=bug&page=1&state=open)
|
||||||
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
@ -48,13 +59,18 @@ 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
|
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
|
current Vagrant installation, I've vendored Vagrant's sources from the master
|
||||||
and made it available from [`vagrant-lxc`](bin/vagrant-lxc). So after `vagrant-lxc`
|
and made it available from [`vagrant-lxc`](bin/vagrant-lxc). So after installing
|
||||||
gets installed, create a `Vagrantfile` like the one below and run `vagrant-lxc up --provider=lxc`:
|
`vagrant-lxc` and adding the base box, create a `Vagrantfile` like the one below
|
||||||
|
and run `vagrant-lxc up --provider=lxc`:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
Vagrant.configure("2") do |config|
|
Vagrant.configure("2") do |config|
|
||||||
config.vm.box = "ubuntu-cloud"
|
config.vm.box = "ubuntu-cloud"
|
||||||
|
|
||||||
|
# Create a private network, which allows host-only access to the machine
|
||||||
|
# using a specific IP.
|
||||||
|
# config.vm.network :private_network, ip: "192.168.33.10"
|
||||||
|
|
||||||
# Share an additional folder to the guest Container. The first argument
|
# Share an additional folder to the guest Container. The first argument
|
||||||
# is the path on the host to the actual folder. The second argument is
|
# is the path on the host to the actual folder. The second argument is
|
||||||
# the path on the guest to mount the folder. And the optional third
|
# the path on the guest to mount the folder. And the optional third
|
||||||
|
@ -67,6 +83,8 @@ Vagrant.configure("2") do |config|
|
||||||
# Limits swap size
|
# Limits swap size
|
||||||
lxc.start_opts << 'lxc.cgroup.memory.memsw.limit_in_bytes=500M'
|
lxc.start_opts << 'lxc.cgroup.memory.memsw.limit_in_bytes=500M'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ... your puppet / chef / shell provisioner configs here ...
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -74,7 +92,7 @@ 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,
|
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](#using-virtualbox-for-development)
|
fire up the [same Vagrant VirtualBox machine I'm using for development](#using-virtualbox-for-development)
|
||||||
to try things out and do the same as above. That might also get you up and running
|
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 ;)
|
if you are working on a mac or windows host ;)
|
||||||
|
|
||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
@ -102,20 +120,23 @@ cp Vagrantfile.dev.1.0 Vagrantfile
|
||||||
vagrant ssh
|
vagrant ssh
|
||||||
```
|
```
|
||||||
|
|
||||||
*NOTE: `setup-vagrant-dev-box` takes around 10 minutes on a 15mb connection
|
|
||||||
after the [base vagrant box](Vagrantfile.dev.1.0#L5) and ubuntu [lxc cloud
|
|
||||||
img](setup-vagrant-dev-box#L15-L16) have been downloaded*
|
|
||||||
|
|
||||||
|
## Protips
|
||||||
|
|
||||||
## Protip
|
If you want to find out more about what's going on under the hood on vagrant,
|
||||||
|
prepend `VAGRANT_LOG=debug` to your `vagrant-lxc` commands. For `lxc-start`s
|
||||||
If you want to find out more about what's going on under the hood, prepend `VAGRANT_LOG=debug`
|
debugging set `LXC_START_LOG_FILE`:
|
||||||
to your `vagrant-lxc` commands like:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
VAGRANT_LOG=debug vagrant-lxc up
|
LXC_START_LOG_FILE=/tmp/lxc-start.log VAGRANT_LOG=debug vagrant-lxc up
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This will output A LOT of information on your terminal and some useful information
|
||||||
|
about `lxc-start` to `/tmp/lxc-start.log`.
|
||||||
|
|
||||||
|
Debugging whats going on with the container itself is a pain, there are some
|
||||||
|
nice little scripts on the [/dev](dev) folder of the project.
|
||||||
|
|
||||||
|
|
||||||
## Help!
|
## Help!
|
||||||
|
|
||||||
|
@ -128,20 +149,22 @@ rm -rf .vagrant
|
||||||
mv .vagrant.v1* .vagrant
|
mv .vagrant.v1* .vagrant
|
||||||
```
|
```
|
||||||
|
|
||||||
### The container does not stop from `vagrant halt`
|
### I'm unable to restart containers!
|
||||||
|
|
||||||
There is some hidden bug which I wasn't able to reproduce properly, if that
|
It happened to me quite a few times in the past and it seems that it is related
|
||||||
happens to you, just run `lxc-shutdown -n container_name` and try again.
|
to to a bug on linux kernel, so make sure you are using a bug-free kernel
|
||||||
|
(>= 3.5.0-17.28). More information can be found on:
|
||||||
|
|
||||||
### I'm unable to start containers!
|
* https://bugzilla.kernel.org/show_bug.cgi?id=47181
|
||||||
|
* https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1021471
|
||||||
|
* https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1065434
|
||||||
|
|
||||||
Sometimes the Virtual Box dev machine I'm using is not able to `lxc-start`
|
Sometimes the Virtual Box dev machine I'm using is not able to `lxc-start`
|
||||||
containers anymore. Most of the times it was an issue with the [arguments](https://github.com/fgrehm/vagrant-lxc/blob/master/lib/vagrant-lxc/container.rb#L85)
|
containers anymore. Most of the times it was an issue with the [arguments](https://github.com/fgrehm/vagrant-lxc/blob/master/lib/vagrant-lxc/container.rb#L85)
|
||||||
[I provided](https://github.com/fgrehm/vagrant-lxc/blob/master/example/Vagrantfile#L12-L15)
|
[I provided](https://github.com/fgrehm/vagrant-lxc/blob/master/example/Vagrantfile#L12-L15)
|
||||||
to it. If you run into that, just try to `vagrant reload` the dev box since most
|
to it. If you run into that, rollback your changes and try to `vagrant reload`
|
||||||
of the times things get back to normal. If it still doesn't work, you can try
|
the dev box. If it still doesn't work, please file a bug at the issue tracker
|
||||||
to run `setup-vagrant-dev-box` again to restore an snapshot that [it creates](https://github.com/fgrehm/vagrant-lxc/blob/master/setup-vagrant-dev-box#L132-L137)
|
|
||||||
automagically for you.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue