updated README.md
[leap_cloudadmin.git] / README.md
1 =====================
2 Leap Cloudadmin Tools
3 =====================
4
5 Tools to clone a new kvm instance from an existing baseimage
6
7
8 Outline
9 =======
10
11 Cloning Images will take these steps: 
12
13 * Clone Disk and xml-config from (inactive) Domain leap-baseimage-wheezy, using virt-clone
14 * Use sfdisk to grow the root partition.
15 * Create second disk (vfat-formatted), put the files meta-data and user-data on it
16 * Start new Domain and attach second disk to it
17 * Cloud-init will start at the end of the boot process, find the disk containing userdata, and configure the Domain:
18 ** set up timezone
19 ** setting a default locale
20 ** setting hostname
21 ** editing /etc/hosts for fqdn
22 ** sets root password
23 ** generate ssh host keys
24 ** adding ssh keys to /root.ssh/authorized_keys so they can log in
25 ** apt-get update/upgrade
26
27 Setup (once)
28 ============
29
30 * We need util-linux from wheezy, because of the "sfdisk-feature": 
31   https://bugs.launchpad.net/ubuntu/+source/util-linux/+bug/686124 which lets us script the growing of the root partition.
32
33   apt-get install dosfstools mtools
34   apt-get install -t wheezy util-linux
35   echo "mtools_skip_check=1">~/.mtoolsrc
36   mkdir /var/lib/libvirt/cloudinit
37   chown libvirt-qemu /var/lib/libvirt/cloudinit
38
39 * Clone repository 
40
41   git clone git://code.leap.se/leap_cloudadmin /usr/local/bin/leap_cloudadmin
42   ln -s /usr/local/bin/leap_cloudadmin/create-guest-with-cloudinit /usr/local/bin/create-guest-with-cloudinit
43
44
45 Clone Instance
46 ==============
47
48 * edit /etc/cloudinit/NAME.cfg, using vmtest.cfg.example from this repository as template:
49
50   cp /usr/local/bin/leap_cloudadmin/vmtest.cfg.example /etc/cloudinit/NAME.cfg
51
52 * create new VM:
53
54   /usr/local/bin/create-guest-with-cloudinit -s 7 NAME
55
56 * see /var/log/cloud-init.log on guest for information on cloudinit run
57
58
59 Modify Userdata later, if needed
60 ================================
61
62   mount -o loop /var/lib/libvirt/cloudinit/cloudinit-test-user-data.img /mnt
63
64
65 Configure new guest
66 ===================
67
68 Networking
69 ----------
70
71 * By default, eth0 uses NATed networking through the host virbr0. 
72   It gets an dynamic IP throught dhcp, and can access the internet through that.
73 * To assign a static IP, either configure it in the condig file (recommended), or 
74   add it later after logging into the vm. Add according entry to /etc/network/interfaces, i.e.: 
75
76   allow-hotplug eth1
77   iface eth1 inet static
78     address 94.103.43.9
79     netmask 255.255.255.0
80     network 94.103.43.0
81     broadcast 94.103.43.255
82     gateway 94.103.43.1
83     # dns-* options are implemented by the resolvconf package, if installed
84     dns-nameservers 8.8.8.8 8.8.4.4
85     dns-search leap.se
86