virtual infrastructure

17
Virtual Infrastructure: kvm, uvb + libvirt Bryan McLellan http://loftninjas.org [email protected] Senior Systems Administrator Widemile

Upload: bryan-mclellan

Post on 29-Aug-2014

2.689 views

Category:

Technology


1 download

DESCRIPTION

Building an open-source virtualization infrastructure

TRANSCRIPT

Page 1: Virtual Infrastructure

Virtual Infrastructure:

kvm, uvb + libvirt

Bryan McLellanhttp://loftninjas.org

[email protected]

Senior Systems Administrator

Widemile

Page 2: Virtual Infrastructure

Widemile is awesome

I work there, and thus the world is a better place for all

of humanity.

Page 3: Virtual Infrastructure

What I got for “free”

•Identical Blades

•Running non identical Debian installs (etch/sid, i386/amd64)

•Running different versions of vmware-server•Running different versions of vmware-server

• OS, software, installed by hand

• Configure using notes in an outlook public folder

•Host database tracked with DNS

vm04-something.test.widemile.com

Page 4: Virtual Infrastructure

Problems

• Lack of Homogeneity

• Monkey configuration sucks

• Documentation offensive

http://www.flickr.com/photos/annebuzz/2666654754/

Page 5: Virtual Infrastructure

What I did

• Lack of Homogeneity

– debian pxe install with preseeds

• Monkey configuration sucks

– puppify (configuration management)– puppify (configuration management)

– capistrano (ruby scripting over ssh)

– iclassify (node classification)

• Documentation offensive

– Configuration management is self documenting

– Wikify the notes

Page 6: Virtual Infrastructure

We can always do better

http://www.flickr.com/photos/jpasden/67513019/

Page 7: Virtual Infrastructure

What upset me (nobody else cares)

• PXE installs take soooooo long

• Backporting too many packages to debian

• Interacting with VMware programmatically

too much work.too much work.

• VMware UIs cost $$

• Dreams: cpu/ram hotplug, live migration

Page 8: Virtual Infrastructure

How I Learned to Stop Worrying and

Love the Bomb• PXE installs take soooooo long

– deb-bootstrap with ubuntu-vm-builder (2.5min)

• Backporting too many packages to debian– switch to Ubuntu!

• Interacting with VMware programmatically too much • Interacting with VMware programmatically too much work.– libvirt is much easier and cleaner

• VMware UIs cost $$– Libvirt is free

• Dreams: cpu/ram hotplug, live migration– Word on the street is that kvm + libvirt support these

– I don’t think they’re there yet though.

Page 9: Virtual Infrastructure

libvirt – virtualization API

Started at Redhat ‘s Emerging Technology Group

Was Xen focused, but Redhat recently bought Qumranet, makers of KVM

Ubuntu/Canonical picked KVM as virtualization platform of choice

libvirt doesn’t really support all that

Provides CLI management (virsh)

Provides GUI management (virt-manager)

Page 10: Virtual Infrastructure

virsh

Page 11: Virtual Infrastructure

virt-manager

Page 12: Virtual Infrastructure

ubuntu-vm-builder

Bash script wrapper for deb-bootstrap + qemu

apt-get install ubuntu-vm-builder

capistrano script:

vmware: 102 lines

uvb: 12 lines

ubuntu-vm-builder kvm hardy ubuntu-vm-builder kvm hardy

--addpkg openssh-server

-d /srv/kvm/#{hostname}

--domain #{domain}

--hostname #{hostname}

--mem #{memory}

--mirror http://ubuntu.widemile.com/ubuntu

--libvirt qemu:///system

--bridge #{eth0}

Page 13: Virtual Infrastructure

ubuntu-vm-builder

Bash script wrapper for deb-bootstrap + qemu

apt-get install ubuntu-vm-builder

capistrano script:

vmware: 102 lines

uvb: 12 lines

ubuntu-vm-builder kvm hardy

Not a lot of enterprise features yet

Bridging vs NATubuntu-vm-builder kvm hardy

--addpkg openssh-server

-d /srv/kvm/#{hostname}

--domain #{domain}

--hostname #{hostname}

--mem #{memory}

--mirror http://ubuntu.widemile.com/ubuntu

--libvirt qemu:///system

--bridge #{eth0}

Bridging vs NAT

Root password / creates user

Page 14: Virtual Infrastructure

kvm

• The cool hypervisor on the block (ubuntu, redhat)

• Kernel modifications are mainlined (unlike xen)

• Super fast / lightweight (feel the wind in your hair)

• Growing fast

class kvm {

case $lsbdistid {

"Ubuntu": {"Ubuntu": {

# Only Ubuntu releases are new enough for this

package {

"kvm":

ensure => present;

"libvirt-bin":

ensure => present;

"ubuntu-vm-builder":

ensure => latest;

}

Page 15: Virtual Infrastructure

file { "/srv/kvm":

ensure => directory,

group => admins,

mode => 0775,

}

# Permissions required for remote access

# Puppet doesn't support managing the libvirtd group members through the

group typegroup type

file {

"/var/run/libvirt/libvirt-sock":

group => admins,

require => Service["libvirt-bin"];

"/var/run/libvirt/libvirt-sock-ro":

group => admins,

require => Service["libvirt-bin"];

}

Page 16: Virtual Infrastructure

service { "libvirt-bin":

ensure => running,

hasstatus => true,

require => Package["libvirt-bin"],

}

# required by u-v-b

exec { "devmapper-autoload":

command => "/bin/echo dm_mod >> /etc/modules",

onlyif => "/usr/bin/test `grep -c '^dm_mod' /etc/modules` -lt 1",onlyif => "/usr/bin/test `grep -c '^dm_mod' /etc/modules` -lt 1",

}

exec { "devmapper-load":

command => "/sbin/modprobe dm_mod",

onlyif => "/usr/bin/test `/bin/lsmod | grep -c '^dm_mod'` -lt 1",

}

realize Group["libvirtd"]

}

}

}

Page 17: Virtual Infrastructure

http://loftninjas.org