mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
v0.0.6
* Routed networks support. * SSH configurable params in Vagrantfile. * Updated README file.
This commit is contained in:
parent
2edd384f8e
commit
d05196692c
@ -1,3 +1,10 @@
|
||||
# 0.0.6 (Jul 24, 2013)
|
||||
|
||||
* Synced folder via NFS support.
|
||||
* Routed private network support.
|
||||
* Configurable ssh parameters in Vagrantfile via `config.ssh.*`.
|
||||
* Fixed uploading base box image to storage pool bug (buffer was too big).
|
||||
|
||||
# 0.0.5 (May 10, 2013)
|
||||
|
||||
* Private networks support.
|
||||
|
50
README.md
50
README.md
@ -4,12 +4,12 @@ This is a [Vagrant](http://www.vagrantup.com) 1.1+ plugin that adds an
|
||||
[Libvirt](http://libvirt.org) provider to Vagrant, allowing Vagrant to
|
||||
control and provision machines via Libvirt toolkit.
|
||||
|
||||
**Note:** Actual version (0.0.5) is still a development one. Feedback is
|
||||
**Note:** Actual version (0.0.6) is still a development one. Feedback is
|
||||
welcome and can help a lot :-)
|
||||
|
||||
## Features (Version 0.0.5)
|
||||
## Features (Version 0.0.6)
|
||||
|
||||
* Controll local or remote Libvirt hypervisors.
|
||||
* Controll local Libvirt hypervisors.
|
||||
* Vagrant `up`, `destroy`, `suspend`, `resume`, `halt`, `ssh` and `provision` commands.
|
||||
* Upload box image (qcow2 format) to Libvirt storage pool.
|
||||
* Create volume as COW diff image for domains.
|
||||
@ -18,7 +18,7 @@ welcome and can help a lot :-)
|
||||
* SSH into domains.
|
||||
* Setup hostname and network interfaces.
|
||||
* Provision domains with any built-in Vagrant provisioner.
|
||||
* Synced folder support via `rsync` and `nfs`
|
||||
* Synced folder support via `rsync` or `nfs`.
|
||||
|
||||
## Future work
|
||||
|
||||
@ -66,6 +66,11 @@ centos64 box and setup with 10.20.30.40 IP address.
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
|
||||
# If you are still using old centos box, you have to setup root username for
|
||||
# ssh access. Read more in section 'SSH Access To VM'.
|
||||
config.ssh.username = "root"
|
||||
|
||||
config.vm.define :test_vm do |test_vm|
|
||||
test_vm.vm.box = "centos64"
|
||||
test_vm.vm.network :private_network, :ip => '10.20.30.40'
|
||||
@ -110,6 +115,7 @@ Vagrant.configure("2") do |config|
|
||||
dbserver.vm.provider :libvirt do |domain|
|
||||
domain.memory = 2048
|
||||
domain.cpus = 2
|
||||
domain.nested = true
|
||||
end
|
||||
end
|
||||
|
||||
@ -153,7 +159,7 @@ An examples of network interface definitions:
|
||||
|
||||
```ruby
|
||||
config.vm.define :test_vm1 do |test_vm1|
|
||||
test_vm1.vm.network :private_network, :ip => '10.20.30.40'
|
||||
test_vm1.vm.network :private_network, :ip => "10.20.30.40",
|
||||
end
|
||||
```
|
||||
|
||||
@ -178,14 +184,18 @@ starts with 'libvirt__' string. Here is a list of those options:
|
||||
network 'default' is used.
|
||||
* `:libvirt__netmask` - Used only together with `:ip` option. Default is
|
||||
'255.255.255.0'.
|
||||
* `:libvirt__nat_interface` - Name of interface, where should network be
|
||||
NATed. Used only when creating new network. By default, all physical
|
||||
interfaces are used.
|
||||
* `:libvirt__isolated` - If network should be isolated - without NAT to outside.
|
||||
Used only when creating new network. Default is set to false.
|
||||
* `:libvirt__dhcp_enabled` - If DHCP will offer addresses, or not. Used only
|
||||
when creating new network. Default is true.
|
||||
* `:libvirt__adapter` - Number specifiyng sequence number of interface.
|
||||
* `:libvirt__forward_mode` - Specify one of `none`, `nat` or `route` options.
|
||||
This option is used only when creating new network. Mode `none` will create
|
||||
isolated network without NATing or routing outside. You will want to use
|
||||
NATed forwarding typically to reach networks outside of hypervisor. Routed
|
||||
forwarding is typically useful to reach other networks within hypervisor.
|
||||
By default, option `nat` is used.
|
||||
* `:libvirt__forward_device` - Name of interface/device, where network should
|
||||
be forwarded (NATed or routed). Used only when creating new network. By
|
||||
default, all physical interfaces are used.
|
||||
|
||||
## Obtaining Domain IP Address
|
||||
|
||||
@ -197,6 +207,24 @@ makes lease information public in `/var/lib/libvirt/dnsmasq` directory, or in
|
||||
information like which MAC address has which IP address resides and it's parsed
|
||||
by vagrant-libvirt plugin.
|
||||
|
||||
## SSH Access To VM
|
||||
|
||||
There are some configuration options for ssh access to VM via `config.ssh.*` in
|
||||
Vagrantfile. Untill provider version 0.0.5, root user was hardcoded and used to
|
||||
access VMs ssh. Now, vagrant user is used by default, but it's configurable via
|
||||
`config.ssh.username` option in Vagrantfile now.
|
||||
|
||||
If you are still using CentOS 6.4 box from example in this README, please set
|
||||
ssh username back to root, because user vagrant is not usable (I forgot to add
|
||||
necessary ssh key to his authorized_keys).
|
||||
|
||||
Configurable ssh parameters in Vagrantfile after provider version 0.0.5 are:
|
||||
|
||||
* `config.ssh.username` - Default is username vagrant.
|
||||
* `config.ssh.guest_port` - Default port is set to 22.
|
||||
* `config.ssh.forward_agent` - Default is false.
|
||||
* `config.ssh.forward_x11` - Default is false.
|
||||
|
||||
## Synced Folders
|
||||
|
||||
There is minimal support for synced folders. Upon `vagrant up`, the Libvirt
|
||||
@ -206,7 +234,7 @@ to the remote machine over SSH.
|
||||
This is good enough for all built-in Vagrant provisioners (shell,
|
||||
chef, and puppet) to work!
|
||||
|
||||
if used options :nfs => true, folder will exported by nfs.
|
||||
If used options `:nfs => true`, folder will exported by nfs.
|
||||
|
||||
## Box Format
|
||||
|
||||
|
@ -45,6 +45,8 @@ module VagrantPlugins
|
||||
@options = scoped_hash_override(options, :libvirt)
|
||||
@options = {
|
||||
:netmask => '255.255.255.0',
|
||||
:dhcp_enabled => true,
|
||||
:forward_mode => 'nat',
|
||||
}.merge(@options)
|
||||
|
||||
# Prepare a hash describing network for this specific interface.
|
||||
@ -201,14 +203,9 @@ module VagrantPlugins
|
||||
@network_address = @interface_network[:ip_address]
|
||||
@network_netmask = @interface_network[:netmask]
|
||||
|
||||
if @options[:isolated]
|
||||
@network_forward_mode = false
|
||||
else
|
||||
@network_forward_mode = 'nat'
|
||||
|
||||
if @options[:nat_interface]
|
||||
@network_nat_interface = @options[:nat_interface]
|
||||
end
|
||||
@network_forward_mode = @options[:forward_mode]
|
||||
if @options[:forward_device]
|
||||
@network_forward_device = @options[:forward_device]
|
||||
end
|
||||
|
||||
if @options[:dhcp_enabled]
|
||||
|
@ -40,14 +40,19 @@ module VagrantPlugins
|
||||
}
|
||||
raise Errors::NoIpAddressError if not ip_address
|
||||
|
||||
# Return the info
|
||||
# TODO: Some info should be configurable in Vagrantfile
|
||||
return {
|
||||
ssh_info = {
|
||||
:host => ip_address,
|
||||
:port => 22,
|
||||
:forward_agent => true,
|
||||
:forward_x11 => true,
|
||||
:port => machine.config.ssh.guest_port,
|
||||
:username => machine.config.ssh.username,
|
||||
:forward_agent => machine.config.ssh.forward_agent,
|
||||
:forward_x11 => machine.config.ssh.forward_x11,
|
||||
}
|
||||
|
||||
if not ssh_info[:username]
|
||||
ssh_info[:username] = machine.config.ssh.default.username
|
||||
end
|
||||
|
||||
ssh_info
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -2,9 +2,9 @@
|
||||
<name><%= @network_name %></name>
|
||||
<bridge name="<%= @network_bridge_name %>" />
|
||||
|
||||
<% if @network_forward_mode != false %>
|
||||
<% if @network_nat_interface %>
|
||||
<forward mode="<%= @network_forward_mode %>" dev="<%= @network_nat_interface %>" />
|
||||
<% if @network_forward_mode != 'none' %>
|
||||
<% if @network_forward_device %>
|
||||
<forward mode="<%= @network_forward_mode %>" dev="<%= @network_forward_device %>" />
|
||||
<% else %>
|
||||
<forward mode="<%= @network_forward_mode %>" />
|
||||
<% end %>
|
||||
|
@ -1,5 +1,5 @@
|
||||
module VagrantPlugins
|
||||
module Libvirt
|
||||
VERSION = "0.0.5"
|
||||
VERSION = "0.0.6"
|
||||
end
|
||||
end
|
||||
|
@ -10,7 +10,7 @@
|
||||
# For more info about creating custom box refer to
|
||||
# https://github.com/pradels/vagrant-libvirt/tree/master/example_box
|
||||
|
||||
# We need a hostname.
|
||||
# We need to set a hostname.
|
||||
if [ $# -ne 1 ]; then
|
||||
echo "Usage: $0 <hostname>"
|
||||
echo "Hostname should be in format vagrant-[os-name], e.g. vagrant-redhat63."
|
||||
@ -75,7 +75,7 @@ sed -i 's/Defaults\s*requiretty/Defaults !requiretty/' /etc/sudoers
|
||||
|
||||
|
||||
# SSH setup
|
||||
# Add Vagrant ssh key for root accout.
|
||||
# Add Vagrant ssh key for root and vagrant accouts.
|
||||
sed -i 's/.*UseDNS.*/UseDNS no/' /etc/ssh/sshd_config
|
||||
|
||||
[ -d ~root/.ssh ] || mkdir ~root/.ssh
|
||||
@ -85,6 +85,13 @@ ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7
|
||||
EOF
|
||||
chmod 600 ~root/.ssh/authorized_keys
|
||||
|
||||
[ -d ~vagrant/.ssh ] || mkdir ~vagrant/.ssh
|
||||
chmod 700 ~vagrant/.ssh
|
||||
cat > ~vagrant/.ssh/authorized_keys << EOF
|
||||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
|
||||
EOF
|
||||
chmod 600 ~vagrant/.ssh/authorized_keys
|
||||
|
||||
|
||||
# Disable firewall and switch SELinux to permissive mode.
|
||||
chkconfig iptables off
|
||||
|
Loading…
Reference in New Issue
Block a user