Commits

Kaspar Schiess committed 4ae4480

Bumps version and documents changes

Preparing to release this as 0.3.0

  • Participants
  • Parent commits f0aaafd
  • Tags 0.3.0

Comments (0)

Files changed (10)

 PATH
   remote: .
   specs:
-    qemu-toolkit (0.2.18)
+    qemu-toolkit (0.3.0)
       clamp
 
 GEM
   + sets qemu_toolkit:export attribute on VM datasets.
   + pretty VM listing
   + create VMNAME for vmadm
+  + Full man pages.
 
 = 0.2.0 / 30Aug12
 
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "QEMU\-TOOLKIT" "7" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBqemu\-toolkit\fR \- A toolkit for running qemu on Illumos / OmniOS
+.
+.SH "SYNOPSIS"
+qemu\-toolkit is a small set of scripts to control QEMU kvm virtualised machines on a set of illumos hosts\. Have a look at \'storadm\' and \'vmadm\' \- inline help will show you the possibilities\.
+.
+.SH "INSTALLATION"
+qemu\-toolkit is a Ruby gem\. This means you can install it with one simple command:
+.
+.IP "" 4
+.
+.nf
+
+gem install qemu\-toolkit
+.
+.fi
+.
+.IP "" 0
+.
+.P
+For full installation instructions, please see qemu\-toolkit\-install(7)\.
+.
+.SH "CONTRIBUTE"
+This project is hosted on bitbucket \fIhttps://bitbucket\.org/kschiess/qemu\-toolkit/src\fR\. An issue tracker is available at bitbucket \fIhttps://bitbucket\.org/kschiess/qemu\-toolkit/issues\fR\.
+.
+.P
+We value all contributions, provided they
+.
+.IP "\(bu" 4
+are tested and have a clear rationale
+.
+.IP "\(bu" 4
+are generally useful
+.
+.IP "\(bu" 4
+come as a clean changeset (pull request or email patch)
+.
+.IP "" 0
+.
+.P
+Discussion regarding this project via \'qemutoolkit\' mailing list\. Subscribe by sending any kind of message to this address \fImailto:qemutoolkit@librelist\.com\fR\.
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)
+.
+.SH "AUTHORS"
+Copyright (c) 2012 Kaspar Schiess\.
+.
+.SH "COPYRIGHT"
+This tool is under a MIT license\. Please see the LICENSE file in the original source\.

doc/qemu-toolkit-configuration.7

+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "QEMU\-TOOLKIT\-CONFIGURATION" "7" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBqemu\-toolkit\-configuration\fR \- configuration for qemu\-toolkit
+.
+.SH "SYNTAX"
+The tool \fBvmadm\fR reads all files ending in \fB\.rb\fR from \fB/etc/qemu\-toolkit\fR on startup\. It expects these Ruby scripts to define virtual machines using the syntax defined below\.
+.
+.SS "basic vm definition"
+A virtual machine definition is written in a Ruby\-DSL and looks like this:
+.
+.IP "" 4
+.
+.nf
+
+virtual_machine "myvm" do
+  # Options go here! You\'d need at least one disk to start\.
+end
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Since the definition is Ruby, nothing stops you from doing more complicated things like connecting to a database or generating definitions using method calls\. Here\'s an example we\'ve used in the wild:
+.
+.IP "" 4
+.
+.nf
+
+def lan name, mac
+  virtual_machine(name) do
+    nic \'eth0\', macaddr: mac, via: \'lan0\'
+  end
+end
+
+# Allows for very short VM definitions:
+lan \'vm1\', \'1:8:20:52:a6:7e\'
+.
+.fi
+.
+.IP "" 0
+.
+.SS "available options"
+Here\'s a list of configuration options within the virtual_machine declaration:
+.
+.TP
+cpus \fINUMBER\fR
+Configures the number of SMP cpus simulated to the guest system\. You should not configure more SMP cpus than you have physical CPU cores available\.
+.
+.IP "" 4
+.
+.nf
+
+# configures 4 SMP cpus
+cpus 4
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+disk \fIDEVICE_PATH\fR
+Add a disk drive to the guest system\. \fIDEVICE_PATH\fR should be the quoted full path to a block device\.
+.
+.IP
+This is a macro that will define a \fBvirtio\fR\-device and automatically number your drives from 0 to N\. If you\'re looking for more immediate control over qemu options, use the \fBdrive\fR\-option\.
+.
+.IP "" 4
+.
+.nf
+
+# Use a zvol block device
+disk \'/dev/zvol/dsk/pool1/myvm/disk1\'
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+drive \fIOPTIONS\fR
+Directly add a drive directive to qemu options\. If you use this, you\'ll need to provide all key\-value pairs for the directive as a Ruby hash\. Note that if you do not specify \'index\', your drive will get the next free disk index\. (as is the case with \fBdisk\fR) For the full list of options, please refer to the QEMU documentation \fIhttp://qemu\.weilnetz\.de/qemu\-doc\.html\fR\.
+.
+.IP "" 4
+.
+.nf
+
+# Manual drive configuration:
+drive if: \'floppy\', file: \'floppy\.dsk\'
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+net \fITYPE\fR, \fIOPTIONS\fR
+Manual network configuration\. This gives you full access to QEMU options, with the disadvantage of a slightly more complicated set of options\. Here\'s what you would need to do to duplicate the convencience macro \fBnic\fR below:
+.
+.IP "" 4
+.
+.nf
+
+net :vnic, vlan: 1, name: \'vm1\', ifname: \'vm1\',
+  macaddr: \'1:8:20:52:a6:7e\'
+net :nic, vlan: 1, name: "vm1", model: "virtio",
+  macaddr: \'1:8:20:52:a6:7e\'
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+nic \fINAME\fR, \fIOPTIONS\fR
+Add a virtual network card to the guest\. Virtual network cards are made to correspond to vnic links on the host system\. These vnic links are automatically generated for you, all you have to do is to specify a \fBvia:\fR option here\.
+.
+.IP
+The \fBvia:\fR option takes either physical links or etherstub switches as value\. You can also specify a VLAN tag, separated by a colon\. (ie: e1000g0:4)
+.
+.IP
+nic \fBmodel:\fR will default to \fBvirtio\fR\.
+.
+.IP
+NOTE: QEMU/kvm on Illumos will default to providing a single pseudo\-nic that has a DHCP server attached to it by default\. If you do not specify a \fBnic\fR, this is what you\'ll get\.
+.
+.IP "" 4
+.
+.nf
+
+# Create eth0 interface with given mac address via \'igb1\'\.
+nic \'eth0\', macaddr: \'2:8:20:52:a6:7e\', via: \'igb1\'
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+ram \fIMEGABYTES\fR
+Configures the amount of RAM the guest system sees\. Note that the qemu on Illumos locks memory down for the guest and never swaps it out\. This means that you cannot simulate RAM you don\'t have available\. (free)
+.
+.IP "" 4
+.
+.nf
+
+# One gigabyte of RAM should be enough for everyone\. (default)
+ram 1024
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+vnc \fIPORT\fR
+Enables VNC server on port \fIPORT\fR\. Caution: This will listen for connections from all networks and allow unauthorized access to the guests console\. Don\'t use this in real world deployments\. Instead, use \fBvmadm console\fR or connect directly to the unix socket using socat\.
+.
+.IP "" 4
+.
+.nf
+
+# Make vnc listen on a given port: (5900 + display = tcp/ip port)
+vnc_display 0
+.
+.fi
+.
+.IP "" 0
+
+.
+.TP
+extra_arg \fIARGUMENT\fR
+Extra argument for QEMU, appended to the QEMU command line on launch\. If you\'d like to do something that you cannot achieve with the above options, this is your last resort\.
+.
+.IP
+Note that we\'re interested in extending the DSL for common use cases, so you might want to mention your extra_arg usage on the mailing list and get proper treatment from qemu\-toolkit\.
+.
+.IP "" 4
+.
+.nf
+
+# Arguments that are appended to the qemu launch command line:
+extra_arg \'\-foo\'
+.
+.fi
+.
+.IP "" 0
+
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)

doc/qemu-toolkit-install.7

+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "QEMU\-TOOLKIT\-INSTALL" "7" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBqemu\-toolkit\-install\fR \- installations instructions for the qemu\-toolkit
+.
+.SH "PREREQUISITES"
+For this to run, you need at least one physical host running OmniOS \fIhttp://omnios\.omniti\.com/\fR or another Illumos \fIhttps://en\.wikipedia\.org/wiki/Illumos\fR\-based distro\. The host needs to support VT/x extensions to be able to run KVM\-based virtualisation\. Also, some basic working knowledge of Illumos is of help\.
+.
+.SH "INSTALLATION"
+These instructions assume that you install on a clean OmniOS machine\. If you use another distribution, your mileage may vary\. If you have first\-hand experience on other distributions of Illumos, we\'d be interested to hear from you!
+.
+.SS "RVM & Ruby"
+Install packages needed to build Ruby:
+.
+.IP "" 4
+.
+.nf
+
+pkg install git autoconf gnu\-m4 gnu\-make gcc\-3 gnu\-patch \e
+lint system/header header\-math gnu\-coreutils readline \e
+gnu\-binutils gnu\-tar developer/linker
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Then make sure that you have \fB/usr/sfw/bin\fR in your PATH and that your linker is functional\.
+.
+.P
+Install YAML:
+.
+.IP "" 4
+.
+.nf
+
+wget http://pyyaml\.org/download/libyaml/yaml\-0\.1\.4\.tar\.gz
+tar xzvf yaml\-0\.1\.4\.tar\.gz
+cd yaml\-0\.1\.4
+\./configure \-\-prefix=/usr
+make
+make install
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Then Ruby (via RVM):
+.
+.IP "" 4
+.
+.nf
+
+curl \-L https://get\.rvm\.io | bash \-s stable \-\-ruby
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Please see the RVM website \fIhttps://rvm\.io/\fR for more information\.
+.
+.SS "\'socat\'"
+socat is a tool that connects different types of sockets together\. The qemu\-toolkit toolchain uses it to make VNC and VM monitor available\.
+.
+.IP "" 4
+.
+.nf
+
+wget \-\-no\-check\-certificate http://bit\.ly/TwNMrJ \-O socat\-1\.7\.1\.3\.tar\.gz
+tar xzvf socat\-1\.7\.1\.3\.tar\.gz
+cd socat\-1\.7\.1\.3
+# PATCH for this to work: cat patch\.txt | patch
+\./configure
+make
+make install
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Note that the above installation only succeeds if you patch socat using this patch:
+.
+.IP "" 4
+.
+.nf
+
+\-\-\- sysincludes\.h\.orig  2012\-09\-03 16:59:09\.351904279 +0000
++++ sysincludes\.h       2012\-09\-03 16:59:54\.388720160 +0000
+@@ \-131,6 +131,8 @@
+ #include <netpacket/packet\.h>
+ #endif
+ #if HAVE_NETINET_IF_ETHER_H
++#include <net/if\.h>
++#include <netinet/in\.h>
+ #include <netinet/if_ether\.h>
+ #endif
+ #if HAVE_LINUX_IF_TUN_H
+.
+.fi
+.
+.IP "" 0
+.
+.SS "iSCSI target"
+If you want to use the machine as iSCSI target (as a storage provider), you\'ll need to do at least this:
+.
+.IP "" 4
+.
+.nf
+
+pkg install network/iscsi/target
+svcadm enable \-r svc:/network/iscsi/target:default
+.
+.fi
+.
+.IP "" 0
+.
+.P
+The tools expect a target portal group named \fBfrontend\fR\. To create it, use something like the following command, where \fIIP\fR must be an TCP/IP address of the host you\'re doing this for:
+.
+.IP "" 4
+.
+.nf
+
+itadm create\-tpg frontend IP
+.
+.fi
+.
+.IP "" 0
+.
+.SS "QEMU / KVM"
+For qemu to work properly, you must make sure that you have at least as much swap space as you have RAM\. Default configuration only gives you 4GB of swap\. To fix this, do something like the following: (assumes that you\'ve got 30GB of RAM)
+.
+.IP "" 4
+.
+.nf
+
+zfs set volsize=30G rpool/swap
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Also, perhaps obviously, you will need to load the kvm kernel driver\. This is accomplished by
+.
+.IP "" 4
+.
+.nf
+
+add_drv kvm
+.
+.fi
+.
+.IP "" 0
+.
+.P
+You will want to reboot the machine after these two steps for two reasons: Sometimes loading \fBkvm\fR interferes with reboot behaviour, you\'ll want to know that before you continue\. And swap resizing takes effect on reboot only\.
+.
+.SS "qemu\-toolkit"
+Once you\'ve done all this, you\'re ready to install \fBqemu\-toolkit\fR\. Simply:
+.
+.IP "" 4
+.
+.nf
+
+gem install qemu\-toolkit
+.
+.fi
+.
+.IP "" 0
+.
+.P
+You should now have \fBvmadm\fR and \fBstoradm\fR in your path\.
+.
+.SH "FIRST STEPS"
+Create a block device for your virtual machine\. Assuming you want to create it on \fIPOOL\fR:
+.
+.IP "" 4
+.
+.nf
+
+storadm create POOL/myvm 10G
+.
+.fi
+.
+.IP "" 0
+.
+.P
+This should create a dataset called \fIPOOL\fR\fB/myvm\fR and a subordinate zvol called \'disk1\'\. Let\'s connect a virtual machine to that disk:
+.
+.IP "" 4
+.
+.nf
+
+vmadm create myvm
+.
+.fi
+.
+.IP "" 0
+.
+.P
+This will create a configuration file called \fB/etc/qemu\-toolkit/myvm\.rb\fR\. Feel free to edit this\. Once you\'ve customized it to your liking, start the virtual machine and boot from an \fIISO\fR image:
+.
+.IP "" 4
+.
+.nf
+
+vmadm start myvm \-\-bootiso=ISO
+.
+.fi
+.
+.IP "" 0
+.
+.P
+If you\'re interested in configuring your virtual machine (qemu), please see qemu\-toolkit\-configuration(7)\.
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)

doc/qemu-toolkit-overview.7

+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "QEMU\-TOOLKIT\-OVERVIEW" "7" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBqemu\-toolkit\-overview\fR \- architecture and philosophy of qemu\-toolkit
+.
+.SH "OVERVIEW"
+This is a toolkit for running qemu on OmniOS/Illumos\. Features:
+.
+.IP "\(bu" 4
+VMs based on local zvols
+.
+.IP "\(bu" 4
+VMs based on iSCSI targets
+.
+.IP "\(bu" 4
+Full access to QEMUs options (through a nifty Ruby DSL)
+.
+.IP "\(bu" 4
+Automatic vnic creation, supports VLAN tags
+.
+.IP "\(bu" 4
+Secure VNC channel through unix socket
+.
+.IP "\(bu" 4
+Access to VM monitor and serial console
+.
+.IP "" 0
+.
+.P
+Here\'s a sample configuration file:
+.
+.IP "" 4
+.
+.nf
+
+virtual_machine "vm_name" do
+  # Network configuration: vnic via igb1
+  nic \'eth0\', macaddr: \'2:8:20:52:a6:7e\', via: \'igb1\'
+
+  # Disks: via iSCSI iqn
+  iscsi_target \'iqn\.2010\-01\.com\.qemu\-toolkit:vm_name\', "10\.0\.30\.1"
+
+  # 4 SMP CPUs\.
+  cpus 4
+end
+.
+.fi
+.
+.IP "" 0
+.
+.P
+On\-disk layout is as follows:
+.
+.IP "" 4
+.
+.nf
+
+foo                 base zfs dataset
+foo/disk1           first disk, zvol block device
+foo/disk2           second disk, zvol block device
+.
+.fi
+.
+.IP "" 0
+.
+.SH "DEPLOYMENT OPTIONS"
+Using this toolkit, you can deploy your virtual machines in one of two ways:
+.
+.IP "\(bu" 4
+All\-local, using zvols
+.
+.IP "\(bu" 4
+SAN\-style, using iSCSI based block devices mapping to zvols
+.
+.IP "" 0
+.
+.SS "Local ZVOLs"
+In this architectural style, you use both tools (storadm(1) and vmadm(1)) on the same machine\. To create a virtual machine from scratch, you would use the following sequence of commands:
+.
+.IP "" 4
+.
+.nf
+
+$ storadm create pool1/foo 10G
+$ vmadm create foo
+$ vmadm start foo \-\-bootiso=installation\-disk\.iso
+.
+.fi
+.
+.IP "" 0
+.
+.P
+This would create a base dataset pool1/foo with one 10G block device as root disk\. It then creates a file \fBfoo\.rb\fR below \fB/etc/qemu\-toolkit/\fR that defines base attributes for the virtual machine\. Finally, starting the machine using the \fB\-\-bootiso\fR parameter would allow you to install a base system to the virtual machine\.
+.
+.SS "SAN\-style"
+Here you use two machines, one as storage host and one as VM host\. The virtual machines run on host A, but all storage is provided for by host B\. Here\'s a typical sequence of commands to create a virtual machine from scratch in this scenario:
+.
+.IP "" 4
+.
+.nf
+
+Machine B:
+$ storadm create pool1/foo 10G
+$ storadm export pool1/foo
+
+Machine A
+$ vmadm create foo
+# Edit foo\.rb at this point to include a valid iqn + IP pair for host B
+$ vmadm start foo \-\-bootiso=installation\-disk\.iso
+.
+.fi
+.
+.IP "" 0
+.
+.P
+This assumes that you\'ve got iSCSI set up on both machines\. (initiator on A, target on B) While this configuration is certainly more complex than the all\-local one above, it is also more flexible to administer\.
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "STORADM" "1" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBstoradm\fR \- manages virtual machine storage
+.
+.SH "SYNOPSIS"
+\fBstoradm\fR [\-h]
+.
+.br
+\fBstoradm list\fR
+.
+.br
+\fBstoradm create\fR [\-v] \fIname\fR
+.
+.br
+\fBstoradm clone\fR [\-v] \fIname\fR \fItemplate\fR \fIversion\fR
+.
+.br
+\fBstoradm export\fR [\-v] \fIname\fR
+.
+.br
+\fBstoradm hide\fR [\-v] \fIname\fR
+.
+.br
+.
+.SH "DESCRIPTION"
+The \fBstoradm\fR command allows you to manage virtual machine storage all in one place\. It creates, clones and destroys storage spaces\. And if you want to separate storage machines from the hosts that run virtual machines (a SAN style setup), you can \- \fBstoradm\fR provides two subcommands for this setup\.
+.
+.P
+Virtual machine storage is based on ZFS and uses the following dataset layout:
+.
+.IP "" 4
+.
+.nf
+
+vm_name             # base dataset
+vm_name/disk1       # first block device (zvol)
+.
+.fi
+.
+.IP "" 0
+.
+.P
+These subcommands are defined:
+.
+.TP
+\fBstoradm list\fR
+Lists all virtual machine storage spaces on this machine\. For all storage spaces that have an iSCSI export, it lists the corresponding IQN\.
+.
+.TP
+\fBstoradm create\fR [\-v] \fIname\fR
+Creates a new storage space\. \fIname\fR should be a full zfs path to where you want to create the storage space, something like \fBpool1/foo\fR\.
+.
+.TP
+\fB\-v\fR
+Prints all commands as they are executed\.
+
+.
+.TP
+\fBstoradm clone\fR [\-v] \fIname\fR \fItemplate\fR \fIversion\fR
+Clones a new storage space from a template\. \fItemplate\fR refers to a storage space that has a recursive snapshot called \fIversion\fR\.
+.
+.TP
+\fB\-v\fR
+Prints all commands as they are executed\.
+
+.
+.TP
+\fBstoradm export\fR [\-v] \fIname\fR
+Creates an iSCSI export for the storage space\. All disks of the storage space are mapped to LUNs in the iSCSI target\.
+.
+.TP
+\fB\-v\fR
+Prints all commands as they are executed\.
+
+.
+.TP
+\fBstoradm hide\fR [\-v] \fIname\fR
+Hides a storage space by removing the previously created iSCSI export from the system\.
+.
+.TP
+\fB\-v\fR
+Prints all commands as they are executed\.
+
+.
+.SH "EXAMPLES"
+.
+.SS "Example 1 Creating a storage space"
+The following command creates an empty virtual machine storage space with one disk drive of 10GB\.
+.
+.IP "" 4
+.
+.nf
+
+# storadm create pool1/foo 10G
+.
+.fi
+.
+.IP "" 0
+.
+.SS "Example 2 Listing all available storage spaces"
+The following command lists all available storage spaces\.
+.
+.IP "" 4
+.
+.nf
+
+# storadm list
+pool1/foo
+.
+.fi
+.
+.IP "" 0
+.
+.SS "Example 3 Creating a base version and cloning it"
+The following commands snapshot an existing storage space called \fBpool1/template\fR with the version tag \fB0\.1\.0\fR\. A clone is then created based on that version of \fBpool1/template\fR\.
+.
+.IP "" 4
+.
+.nf
+
+# zfs snapshot \-r pool1/template@0\.1\.0
+# storadm clone my_vm pool1/template 0\.1\.0
+.
+.fi
+.
+.IP "" 0
+.
+.SH "BUGS"
+Only the unknown\.
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)
+.
+.SH "AUTHORS"
+Copyright (c) 2012 Kaspar Schiess\.
+.
+.SH "COPYRIGHT"
+This tool is under a MIT license\. Please see the LICENSE file in the original source\.
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "VMADM" "1" "November 2012" "" "qemu-toolkit"
+.
+.SH "NAME"
+\fBvmadm\fR \- manages qemu\-toolkit virtual machines
+.
+.SH "SYNOPSIS"
+\fBvmadm\fR [\-h]
+.
+.br
+\fBvmadm list\fR
+.
+.br
+\fBvmadm create\fR \fIname\fR
+.
+.br
+\fBvmadm start\fR [\-\-bootiso \fIiso_file\fR]\fIname\fR
+.
+.br
+\fBvmadm shutdown\fR \fIname\fR
+.
+.br
+\fBvmadm kill\fR \fIname\fR
+.
+.br
+\fBvmadm monitor\fR \fIname\fR
+.
+.br
+\fBvmadm vnc\fR \fIname\fR
+.
+.br
+\fBvmadm console\fR \fIname\fR
+.
+.br
+.
+.SH "DESCRIPTION"
+The \fBvmadm\fR command manages virtual machines\. A virtual machine is defined by using the \fBvirtual_machine\fR syntax in a file below \fB/etc/qemu\-toolkit\fR\. (see qemu\-toolkit\-configuration(7))
+.
+.TP
+\fBvmadm list\fR
+Lists all virtual machines that are defined on this system\.
+.
+.TP
+\fBvmadm create\fR \fIname\fR
+Creates a new virtual machine definition and fills it with sensible default values\.
+.
+.TP
+\fBvmadm start\fR \fIname\fR
+Starts a virtual machine using QEMU/KVM\.
+.
+.TP
+\fB\-\-bootiso\fR \fIiso_file\fR
+Boots the virtual machine once from virtual cdrom backed by the iso file given\. Upon reboot, the machine will use its first disk to boot\.
+
+.
+.TP
+\fBvmadm shutdown\fR \fIname\fR
+Sends the virtual machine a system/powerdown event\.
+.
+.TP
+\fBvmadm kill\fR \fIname\fR
+Immediately kills the virtual machine\.
+.
+.TP
+\fBvmadm monitor\fR \fIname\fR
+Enters an interactive monitor mode that controls the virtual machine\. The machine must be running for this to work\. Use Control+D to exit\.
+.
+.TP
+\fBvmadm vnc\fR \fIname\fR
+Connect the terminal to a VNC server that displays the console of the virtual machine\.
+.
+.TP
+\fBvmadm console\fR \fIname\fR
+Connects the terminal to the serial console of the virtual machine\. Note that this must be specially configured for most guest OSes\.
+.
+.SH "EXAMPLES"
+.
+.SS "Example 1 Boot a virtual machine"
+The following command starts the virtual machine and boots it from its first disk\.
+.
+.IP "" 4
+.
+.nf
+
+# vmadm start my_vm
+.
+.fi
+.
+.IP "" 0
+.
+.SS "Example 2 Install a virtual machine from ISO"
+The following command boots the virtual machine from a virtual cdrom\. The cdrom is backed by an ISO file called ubuntu\.iso\.
+.
+.IP "" 4
+.
+.nf
+
+# vmadm start my_vm \-\-bootiso ubuntu\.iso
+.
+.fi
+.
+.IP "" 0
+.
+.SH "BUGS"
+When using iscsi targets, you have to relaunch the vm twice to get it to start up\. We have code in place to work around this, but it is not effective\. Work to fix this is underway\.
+.
+.SH "SEE ALSO"
+qemu\-toolkit\-overview(7), qemu\-toolkit\-install(7), qemu\-toolkit\-configuration(7), storadm(1), vmadm(1), README(7)
+.
+.SH "AUTHORS"
+Copyright (c) 2012 Kaspar Schiess\.
+.
+.SH "COPYRIGHT"
+This tool is under a MIT license\. Please see the LICENSE file in the original source\.
   FileUtils.cp '../README.md', '../doc'
   
   ronn_files = Dir['../doc/*.ronn']
-  system %Q(ronn --style toc --html \
+  system %Q(ronn --style toc --roff --html \
     #{ronn_files.join(' ')} \
     ../doc/README.md )
 

qemu-toolkit.gemspec

 
 Gem::Specification.new do |s|
   s.name = 'qemu-toolkit'
-  s.version = '0.2.18'
+  s.version = '0.3.0'
 
   s.authors = ['Kaspar Schiess']
   s.email = 'kaspar.schiess@technologyastronauts.ch'
 
-  s.extra_rdoc_files = ['README']
-  s.files = %w(LICENSE README) + Dir.glob("{lib,bin}/**/*")
+  s.homepage = 'http://kschiess.bitbucket.org/qemu-toolkit/README.7.html'
+  s.license = 'MIT'
+  s.summary = %Q(Manages QEMU kvm virtual machines on Illumos hosts.)
+  s.description = %Q(
+    qemu-toolkit is a collection of small tools that help in managing and
+    running QEMU virtual machines on Illumos/OmniOS. It supports both
+    local operation and SAN-style block storage via iSCSI. 
+  )
+
+  s.extra_rdoc_files = ['README.md']
+  s.files = %w(LICENSE README.md) + Dir.glob("{lib,bin,doc}/**/*")
   s.executables = %w(vmadm storadm)
-  # s.homepage = 'http://'
-  s.rdoc_options = ['--main', 'README']
+  s.rdoc_options = ['--main', 'README.md']
   s.require_paths = ['lib']
-  s.summary = %Q(Manages QEMU kvm virtual machines on Illumos hosts.)
+
+  s.required_ruby_version = '>= 1.9.3'
   
-  s.add_dependency 'clamp'
+  s.add_dependency 'clamp', '~> 0.5'
 end