wiki:install_kvm

Version 18 (modified by Nat Meysenburg, 11 years ago) (diff)

--

This page documents the procedure for creating a new KVM guest on a mayfirst server.

This document is not complete! Do not use it to actually create a new KVM guest yet.

Creating a new KVM guest

  1. Install the kvm-manager scripts
  2. Run kvm-creator to create the new LV for the guest and the needed directory and files in /etc/sv/kvm/:
    USAGE: kvm-creator create|destroy|demo guestname [volumegroup [disksize [ram [tap [mac] ] ] ] 
    
  3. Initially it's a good idea to run the demo. This will give you a breakdown of how the server will be created.
    kvm-creator demo GUESTNAME
    
  4. After determining the settings you want the machine to have, run the demo command and then the 'create' command.
    EXAMPLE WITH OUTPUT:
    0 negri:~/preseed-repo/squeeze# kvm-creator demo hay vg_negri0 15G 512
    NAME : hay
    VG : vg_negri0
    SIZE : 15G
    RAM : 512
    TAP : tap5
    MAC : 02:01:00:00:00:06
    DISK : /dev/mapper/vg_negri0-hay
    0 negri:~/preseed-repo/squeeze# kvm-creator create hay vg_negri0 15G 512
    Adding user `hay' ...
    Adding new group `hay' (1005) ...
    Adding new user `hay' (1005) with group `hay' ...
    Creating home directory `/home/hay' ...
    Copying files from `/etc/skel' ...
      Logical volume "hay" created
    0 negri:~/preseed-repo/squeeze#
    
  5. Add at least one user to the access list for the new KVM guest's serial console
    1. Monkeysphere way:
      1. Add a uid to the /home/<guestname>/.monkeysphere/authorized_user_ids file or copy /root/.monkeysphere/authorized_user_ids to /home/<guestname>/.monkeysphere
    2. SSH key way
      1. Add an SSH key to the /home/<guestname>/.ssh/authorized_keys file
    3. Rebuild the monkeysphere-controlled SSH authorized_keys files:
      monkeysphere-authentication u USERNAME
      
  6. If you are installing an operating system to the new KVM guest:
    1. Customize the details for the server you are installing
      1. Edit /root/preseed-repo/squeeze/server-specifics.cfg with the new server's info. You will need to have chosen the hostname at this point. The a simple file currently looks something like:
        d-i netcfg/get_hostname string algernon
        
        # Static network configuration.
        d-i netcfg/get_nameservers string 209.51.163.29
        d-i netcfg/get_ipaddress string 209.51.180.21
        d-i netcfg/get_netmask string 255.255.255.240
        d-i netcfg/get_gateway string 209.51.180.17
        
        # Set Volume Group Name
        d-i partman-auto-lvm/new_vg_name string vg_algernon0
        
        • This is the time where you want to check the ip_allocation page, claim a new IP and look at the other network settings you will need for this device.
        • Now would also be a good time to go to the control panel and set up a DNS Entry for this server. This should me done in the "mayfirst.org hosting order. That way, when it comes time to use the new kvm guest, you will have workin nameservice to it.
      2. Change into /usr/local/share/ISOs: cd /usr/local/share/ISOs
      3. Run:
        0 negri: di-maker hay-squeeze.iso /root/preseed-repo/squeeze/preseed.cfg /root/preseed-repo/squeeze/server-specifics.cfg /root/preseed-repo/squeeze/late_command                                    
        --2011-03-05 15:22:04--  http://ftp.nl.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux                                                                                
        Resolving ftp.nl.debian.org... 130.89.149.21, 2001:610:1908:a000::149:21                                       
        Connecting to ftp.nl.debian.org|130.89.149.21|:80... connected.                                                
        HTTP request sent, awaiting response... 200 OK                                                                 
        Length: 2417312 (2.3M) [application/octet-stream]                                                              
        Saving to: “linux”                                                                                             
                                                                                                                       
        100%[=====================================================================>] 2,417,312   1.81M/s   in 1.3s     
                                                                                                                       
        2011-03-05 15:22:05 (1.81 MB/s) - “linux” saved [2417312/2417312]                                              
                                                                                                                       
        --2011-03-05 15:22:05--  http://ftp.nl.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz                                                                            
        Reusing existing connection to ftp.nl.debian.org:80.
        HTTP request sent, awaiting response... 200 OK
        Length: 6747069 (6.4M) [application/octet-stream]
        Saving to: “initrd.gz”
        
        100%[=====================================================================>] 6,747,069   3.40M/s   in 1.9s    
        
        2011-03-05 15:22:07 (3.40 MB/s) - “initrd.gz” saved [6747069/6747069]
        
        FINISHED --2011-03-05 15:22:07--
        Downloaded: 2 files, 8.7M in 3.2s (2.76 MB/s)
        38743 blocks
        38772 blocks
        Enabling BIOS support ...
        xorriso 0.5.6 : RockRidge filesystem manipulator, libburnia project.
        
        0 negri:/usr/local/share/ISOs# 
        
    2. Create a symlink called cd.iso in the /home/<guestname>/vms/<guestname>/ directory with a target of the desired ISO:
      ln -s  /usr/local/share/ISOs/<some-installer>.iso /home/<guestname/vms/<guestname>/cd.iso
      

  1. Tell runit to start the guest automatically
    update-service --add /etc/sv/kvm/SERVER-NAME
    
  2. Log into the new guest via ssh: ssh SERVER-NAME@HOST-NAME
  3. Install an OS: everything should be handled by preseed file