Popularity
2.9
Growing
Activity
2.5
-
130
24
29

Description

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

Code Quality Rank: L2
Programming language: C
License: GNU Lesser General Public License v3.0 only
Tags: DevOps Tools     Projects    
Latest version: v1.2.3

Ruby-LXC alternatives and similar gems

Based on the "DevOps Tools" category.
Alternatively, view Ruby-LXC alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Ruby-LXC or a related project?

Add another 'DevOps Tools' Gem

README

Ruby-LXC

Build Status

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

sudo apt-get install ruby-dev lxc-dev

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

or just add this to your Gemfile

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

Usage

  • Container lifecycle management (create, start, stop and destroy containers)

    require 'lxc'
    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