ruby bindings for liblxc
Find a file
Andrea C. Granata 695ee8f87b Allow creation of LXC with bdevspecs.
New Container#create accept 5 parameters:
container.create(template, bdevtype = nil, bdevspecs = {}, flags = 0, args = [])

Example:

myspec = { fstype: 'ext4', fssize: 32212254720, vgname: 'zephirworks_VG'}

c = LXC::Container.new('zephirworks_example')
c.create("ubuntu", "lvm", myspec)
2014-05-04 19:38:33 +02:00
ext/lxc Allow creation of LXC with bdevspecs. 2014-05-04 19:38:33 +02:00
lib Version 1.0.2 2014-03-29 11:41:03 -03:00
test Allow start(:single_arg => value) 2014-03-27 07:47:14 -07:00
.gitignore add bundler support 2013-12-16 12:30:12 -08:00
.travis.yml add 1.8.7 to travis build 2013-12-27 12:18:42 -08:00
Gemfile add bundler support 2013-12-16 12:30:12 -08:00
LICENSE Standardizing project structure 2013-12-06 14:59:02 -02:00
Rakefile Add (still incomplete) RDoc. 2013-12-27 15:44:24 -02:00
README.md Version 1.0.2 2014-03-29 11:41:03 -03:00
ruby-lxc.gemspec Add homepage to gemspec 2014-02-20 08:58:24 -03:00

Ruby-LXC

Introduction

Ruby-LXC is a Ruby binding for liblxc. It allows the creation and management of Linux Containers from Ruby scripts.

Build and installation

Assuming a current installation of LXC is available, to install Ruby-LXC simply run the commands below

bundle install
bundle exec rake compile
gem install pkg/ruby-lxc-1.0.2.gem

or just add this to your Gemfile

gem "ruby-lxc", github: "lxc/ruby-lxc"

Usage

  • Container lifecycle management (create, start, stop and destroy containers)
c = LXC::Container.new('foo')
c.create('ubuntu') # create a container named foo with ubuntu template
c.start
# attach to a running container
c.attach do
  LXC.run_command('ifconfig eth0')
end
c.stop
c.destroy
  • Container inspection
c.name
c.config_path
c.config_item('lxc.cap.drop')
c.cgroup_item('memory.limit_in_bytes')
c.init_pid
c.interfaces
c.ip_addresses
c.state
  • Additional state changing operations (freezing, unfreezing and cloning containers)
c.freeze
c.unfreeze
c.reboot
c.shutdown
  • Clone a container
# clone foo into bar. Parent container has to be frozen or stopped.
clone = c.clone('bar')
  • Wait for a state change
# wait until container goes to STOPPED state, else timeout after 10 seconds
c.wait(:stopped, 10)

Check the provided rdoc documentation for a full list of methods. You can generate it running

rake rdoc