Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lxc/ruby-lxc
ruby bindings for liblxc
https://github.com/lxc/ruby-lxc
containers lxc ruby
Last synced: 19 days ago
JSON representation
ruby bindings for liblxc
- Host: GitHub
- URL: https://github.com/lxc/ruby-lxc
- Owner: lxc
- License: lgpl-2.1
- Created: 2013-12-23T21:22:04.000Z (almost 11 years ago)
- Default Branch: main
- Last Pushed: 2023-07-24T15:07:37.000Z (over 1 year ago)
- Last Synced: 2024-05-02T07:15:21.389Z (8 months ago)
- Topics: containers, lxc, ruby
- Language: C
- Homepage: https://linuxcontainers.org/lxc
- Size: 176 KB
- Stars: 130
- Watchers: 24
- Forks: 29
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ruby - Ruby-LXC - Native ruby binding for Linux containers. (DevOps Tools)
README
# Ruby-LXC
[![Build Status](https://travis-ci.org/lxc/ruby-lxc.svg?branch=master)](https://travis-ci.org/lxc/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```sh
sudo apt-get install ruby-dev lxc-devbundle 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```
```ruby
gem "ruby-lxc", github: "lxc/ruby-lxc", require: "lxc"
```## Usage
- Container lifecycle management (create, start, stop and destroy containers)
```ruby
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
```ruby
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)
```ruby
c.freeze
c.unfreeze
c.reboot
c.shutdown
```- Clone a container
```ruby
# clone foo into bar. Parent container has to be frozen or stopped.
clone = c.clone('bar')
```- Wait for a state change
```ruby
# 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
```sh
rake rdoc
```