Merge branch 'master' of github.com:pradels/vagrant-libvirt

Conflicts:
	lib/vagrant-libvirt/config.rb
This commit is contained in:
dima 2013-12-03 21:13:34 +01:00
commit 3917161eb9
9 changed files with 38 additions and 10 deletions

View File

@ -20,6 +20,7 @@ welcome and can help a lot :-)
* Provision domains with any built-in Vagrant provisioner.
* Synced folder support via `rsync` or `nfs`.
* Snapshots via [sahara](https://github.com/jedi4ever/sahara)
* Use boxes from other Vagrant providers via [vagrant-mutate](https://github.com/sciurus/vagrant-mutate)
## Future work
@ -96,8 +97,9 @@ This provider exposes quite a few provider-specific configuration options:
* `connect_via_ssh` - If use ssh tunnel to connect to Libvirt.
* `username` - Username and password to access Libvirt.
* `password` - Password to access Libvirt.
* `storage_pool_name` - Libvirt storage pool name, where box image and
instance snapshots will be stored.
* `id_ssh_key_file` - The id ssh key file name to access Libvirt (eg: id_dsa or id_rsa or ... in the user .ssh directory)
* `storage_pool_name` - Libvirt storage pool name, where box image and instance snapshots will be stored.
* `default_network` - Libvirt default network name. If not specified default network name is 'default'.
### Domain Specific Options

View File

@ -21,3 +21,9 @@ Libvirt box should define at least three data fields in `metadata.json` file.
* format - Currently supported format is qcow2.
* virtual_size - Virtual size of image in GBytes.
## Converting Boxes
Instead of creating a box from scratch, you can use
[vagrant-mutate](https://github.com/sciurus/vagrant-mutate)
to take boxes created for other Vagrant providers and use them
with vagrant-libvirt.

View File

@ -59,6 +59,10 @@ module VagrantPlugins
# VM is not running or suspended. Start it.. Machine should gain
# IP address when comming up, so wait for dhcp lease and store IP
# into machines data_dir.
b3.use NFS
b3.use PrepareNFSSettings
b3.use ShareFolders
b3.use StartDomain
b3.use WaitTillUp
end

View File

@ -53,9 +53,12 @@ module VagrantPlugins
uri << virt_path
uri << '?no_verify=1'
# set ssh key for access to libvirt host
home_dir = `echo ${HOME}`.chomp
uri << "&keyfile=#{home_dir}/.ssh/id_rsa"
if config.id_ssh_key_file
# set ssh key for access to libvirt host
home_dir = `echo ${HOME}`.chomp
uri << "&keyfile=#{home_dir}/.ssh/"+config.id_ssh_key_file
end
conn_attr = {}
conn_attr[:provider] = 'libvirt'

View File

@ -16,6 +16,7 @@ module VagrantPlugins
def initialize(app, env)
@logger = Log4r::Logger.new('vagrant_libvirt::action::create_network_interfaces')
@default_network = env[:machine].provider_config.default_network;
@app = app
end
@ -151,7 +152,7 @@ module VagrantPlugins
end
# TODO Network default can be missing or named different.
return 'default'
return @default_network;
end
end
end

View File

@ -47,6 +47,8 @@ module VagrantPlugins
:forward_agent => machine.config.ssh.forward_agent,
:forward_x11 => machine.config.ssh.forward_x11,
}
ssh_info[:proxy_command] = "ssh '#{machine.provider_config.host}' -l '#{machine.provider_config.username}' nc %h %p" if machine.provider_config.connect_via_ssh
if not ssh_info[:username]
ssh_info[:username] = machine.config.ssh.default.username

View File

@ -19,6 +19,7 @@ module VagrantPlugins
env[:machine].config.vm.synced_folders.each do |id, data|
next if data[:nfs]
proxycommand = "-o ProxyCommand='#{ssh_info[:proxy_command]}'" if ssh_info[:proxy_command]
hostpath = File.expand_path(data[:hostpath], env[:root_path])
guestpath = data[:guestpath]
@ -39,7 +40,7 @@ module VagrantPlugins
command = [
"rsync", "--del", "--verbose", "--archive", "-z",
"--exclude", ".vagrant/",
"-e", "ssh -p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path]}'",
"-e", "ssh -p #{ssh_info[:port]} #{proxycommand} -o StrictHostKeyChecking=no -i '#{ssh_info[:private_key_path]}'",
hostpath,
"#{ssh_info[:username]}@#{ssh_info[:host]}:#{guestpath}"]

View File

@ -18,10 +18,16 @@ module VagrantPlugins
# Password for Libvirt connection.
attr_accessor :password
# ID SSH key file
attr_accessor :id_ssh_key_file
# Libvirt storage pool name, where box image and instance snapshots will
# be stored.
attr_accessor :storage_pool_name
# Libvirt default network
attr_accessor :default_network
# Domain specific settings used while creating new domain.
attr_accessor :memory
attr_accessor :cpus
@ -34,7 +40,9 @@ module VagrantPlugins
@connect_via_ssh = UNSET_VALUE
@username = UNSET_VALUE
@password = UNSET_VALUE
@id_ssh_key_file = UNSET_VALUE
@storage_pool_name = UNSET_VALUE
@default_network = UNSET_VALUE
# Domain specific settings.
@memory = UNSET_VALUE
@ -51,6 +59,7 @@ module VagrantPlugins
@password = nil if @password == UNSET_VALUE
@id_ssh_key_file = 'id_rsa' if @id_ssh_key_file == UNSET_VALUE
@storage_pool_name = 'default' if @storage_pool_name == UNSET_VALUE
@default_network = 'default' if @default_network == UNSET_VALUE
# Domain specific settings.
@memory = 512 if @memory == UNSET_VALUE

View File

@ -35,15 +35,15 @@ module VagrantPlugins
end
class NoBoxVirtualSizeSet < VagrantLibvirtError
error_key(:no_box_virtual_size_error)
error_key(:no_box_virtual_size)
end
class NoBoxFormatSet < VagrantLibvirtError
error_key(:no_box_format_error)
error_key(:no_box_format)
end
class WrongBoxFormatSet < VagrantLibvirtError
error_key(:wrong_box_format_error)
error_key(:wrong_box_format)
end