Customizzazione di un template OpenVz in Proxmox

From RVM Wiki
Revision as of 15:06, 21 October 2014 by Gabriele.vivinetto (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Attenzione questo articolo è ancora incompleto.
Sentiti libero di contribuire cliccando sul tasto edit.


Riferimenti


Every time I want to test some code or software I usually do it on a virtualized environment to keep it isolated from my main system and every time I setup a machine from scratch. I use Virtual Box when I am on the go but at home I have several single-purpose VMs running on Proxmox VE, a powerful open source virtualization platform, based on KVM and OpenVZ. Here is how to simplify the setup process creating a custom Debian-based OpenVZ template:

   Create a regular OpenVZ Container having debian-6.0-standard_6.0-6_i386 as base.
   With the VM up and running, log in and setup networking. In my case I am using DHCP, so I added the following lines to /etc/network/interfaces:
   auto eth0 
   iface eth0 inet dhcp
   and reseted the network stack with /etc/init.d/networking restart.
   Update the system to install the latest patches:
   apt-get update && apt-get upgrade
   Make sure sudo and openssh-server are installed:
   apt-get install sudo openssh-server
   Create the default admin user, add it to the sudoer’s list and setup your ssh-key:
   adduser USERNAME
   usermod -a -G sudo USERNAME 
   mkdir /home/USERNAME/.ssh 
   echo "YOURSSSHKEYHERE" > /home/USERNAME/.ssh/authorized_keys 
   chown -R USERNAME:USERNAME /home/USERNAME/.ssh
   Add PuppetLabs as a repository and install puppet:
   echo -e "deb http://apt.puppetlabs.com/ squeeze main\ndeb-src http://apt.puppetlabs.com/ squeeze main" >> /etc/apt/sources.list.d/puppet.list 
   apt-key adv --keyserver keyserver.ubuntu.com --recv 4BD6EC30 
   apt-get update 
   apt-get install puppet
   Cleanup!
   apt-get --purge clean
   rm -f /etc/hostname 
   cat /dev/null > /etc/resolv.conf
   Let’s remove the current host ssh keys and create a script to auto generate them on the next boot.
   rm -f /etc/ssh/ssh_host_*
   vi /etc/init.d/ssh_gen_host_keys
   Paste the script, a modified version of the one shown on HowToForge:
   #!/bin/sh
   ### BEGIN INIT INFO
   # Provides:          Generates new ssh host keys on first boot
   # Required-Start:    $remote_fs $syslog
   # Required-Stop:     $remote_fs $syslog
   # Default-Start:     2 3 4 5
   # Default-Stop:
   # Short-Description: Generates new ssh host keys on first boot
   # Description:       Generates new ssh host keys on first boot
   ### END INIT INFO
   ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N ""
   ssh-keygen -f /etc/ssh/ssh_host_dsa_key -t dsa -N ""
   /etc/init.d/ssh restart
   insserv -r /etc/init.d/ssh_gen_host_keys
   rm -f \$0
   After editing the file, make it executable and install it:
   chmod a+x /etc/init.d/ssh_gen_host_keys
   insserv /etc/init.d/ssh_gen_host_keys
   Done setting up the VM but don’t turn it off yet! Now take note of your VM ID (CTID) and ssh into Proxmox then run:
   vzctl set CTID --ipdel all --save
   You might want to tweak the /etc/network/interfaces now. Before continuing is a good idea to create an /tmp/excludes file with the following:
   .bash_history
   lost+found
   /dev/*
   /mnt/*
   /tmp/*
   /proc/*
   /sys/*
   /usr/src/*
   /etc/ssh/ssh_host*
   Stop the VM and change directory to the VM root:
   vzctl stop CTID
   cd /var/lib/vz/private/CTID
   Then, tar the directory:
   tar --numeric-owner -czvf /var/lib/vz/template/cache/debian-6.0-YOURCUSTOMTEMPLATE\_6.0-6\_i386.tar.gz -X /tmp/excludes .

After that it will be available as a template for you to create new OpenVZ containers from. Please note that the template name should match one of the conf files on /etc/vz/dists (in your Proxmox box), otherwise you will have to write yourself your own.

This was heavily based on the OpenVZ Wiki, How to create a CentOS template and on Proxmox Forums.

That’s it!