lxc_ssh
lxc_ssh is a ruby gem for managing lxc host systems over an ssh connection. Supports LXC version 1.0 and higher. Depends on net-ssh (https://github.com/net-ssh/net-ssh).
Installation
Add this line to your application's Gemfile:
gem 'lxc_ssh'
And then execute:
$ bundle
Or install it yourself as:
$ gem install lxc_ssh
Usage
First create a connection to your system over ssh (currently only the ssh default port is supported) and authenticate as a privileged user (lxc is installed to /usr in this case):
con = LxcSsh::Connection.new
con.connect('my.cool.host', 'root', nil, '/usr')
If no exception occured, you're ready to go.
Get containers
containers = con.manager.containers
Get specific container information
container = con.manager.container 'my-fancy-container-name'
Result:
#<LxcSsh::Container:0x00000000c7ea48 @name="my-fancy-container-name",
@pid="1234",
@state="RUNNING",
@memory_usage=0,
@memory_limit=0,
@cpu_shares=1024,
@cpu_usage="23994168167209",
@ip="192.168.0.2">
Get container config
config = con.manager.container_config 'my-fancy-container-name'
puts config['lxc.network.veth.pair']
Update config items
config = con.manager.container_config 'my-fancy-container-name'
config['lxc.network.veth.pair'] = 'none'
con.manager.write_config 'my-fancy-container-name', config
Create container
con.manager.create_container 'testcontainer', 'gentoo'
Start container
con.manager.start_container 'testcontainer'
Stop container
con.manager.stop_container 'testcontainer'
Destroy container
con.manager.destroy_container 'testcontainer'
Create container
con.manager.create_container 'testcontainer', 'gentoo'
Get templates
con.manager.template_names
Get template help text
puts con.manager.template_help 'archlinux'
Contributing
- Fork it ( https://github.com/dprandzioch/lxc_ssh/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request