knife-xenserver
Provision virtual machines with Citrix XenServer and Opscode Chef.
Upgrading knife-xenserver
When upgrading knife-xenserver, it's very important to remove older knife-xenserver versions
gem update knife-xenserver
gem clean knife-xenserver
Usage
knife xenserver --help
Examples
List all the VMs
knife xenserver vm list --xenserver-host fooserver \
--xenserver-username root \
--xenserver-password secret
List custom templates
knife xenserver template list --xenserver-host fooserver \
--xenserver-username root \
--xenserver-password secret
Include built-in templates too
knife xenserver template list --xenserver-host fooserver \
--xenserver-username root \
--xenserver-password secret \
--include-builtin
Create a new template from a VHD file (PV by default, use --hvm otherwise)
knife xenserver template create --vm-name ubuntu-precise-amd64 \
--vm-disk ubuntu-precise.vhd \
--vm-memory 512 \
--vm-networks 'Integration-VLAN' \
--storage-repository 'Local storage' \
--xenserver-password changeme \
--xenserver-host 10.0.0.2
Create a VM from template ed089e35-fb49-f555-4e20-9b7f3db8df2d and bootstrap it using the 'root' user and password 'secret'. The VM is created without VIFs, inherited VIFs from template are removed by default (use --keep-template-networks to avoid that)
knife xenserver vm create --vm-template ed089e35-fb49-f555-4e20-9b7f3db8df2d \
--vm-name foobar --ssh-user root \
--ssh-password secret
Create a VM from template and add two custom VIFs in networks 'Integration-VLAN' and 'Another-VLAN', with MAC address 11:22:33:44:55:66 for the first VIF
knife xenserver vm create --vm-template ed089e35-fb49-f555-4e20-9b7f3db8df2d \
--vm-name foobar --ssh-user root \
--ssh-password secret \
--vm-networks 'Integration-VLAN,Another-VLAN' \
--mac-addresses 11:22:33:44:55:66
Create a VM from template and supply ip/host/domain configuration. Requires installation of xe-automater scripts (https://github.com/krobertson/xenserver-automater)
knife xenserver vm create --vm-template my-template -x root --keep-template-networks \
--vm-name my-hostname \
--vm-ip 172.20.1.25 --vm-netmask 255.255.0.0 --vm-gateway 172.20.0.1 --vm-dns 172.20.0.3 \
--vm-domain my-domain.local
The domU/guest will also need xe-guest-utilities installed. You can then list xenstore attributes running 'xenstore-ls vm-data' inside domU.
List hypervisor networks
knife xenserver network list
Sample .chef/knife.rb config
knife[:xenserver_password] = "secret"
knife[:xenserver_username] = "root"
knife[:xenserver_host] = "xenserver-real"
Building the rubygem
gem build knife-xenserver.gemspec