User Tools

Site Tools


Sidebar

cn:ccr:cloud:preparazione_immagini_per_debian_7.1_con_cloud-init

Preparare immagine cloud di Debian 7.1 Wheezy (x86_64)

S.O. e tools necessari

Le successive operazioni vanno eseguite come utente root da una macchina (reale o virtuale) che esegua un S.O. Debian7

export IMAGELIBDIR=/var/lib/images
mkdir -p $IMAGELIBDIR
export IMAGENAME=$IMAGELIBDIR/Debian7.img
export MIRROR=ch
# il mirror può essere scelto dalla lista riportata qui 
# http://ftp.debian.org/debian/README.mirrors.html
# cambiando opportunamente il codice paese (nell'esempio
# ho scelto ch, ma poteva essere "us", "it", "fr", etc...
# alla data di questa modifica (2013-09-19), il mirror "it" sembra non rispondere
#
export MOUNTPOINT=/mnt/chroot
apt-get install --yes debootstrap syslinux parted

Creare il sistema operativo minimale

Creare un file immagine block device
dd if=/dev/zero of=$IMAGENAME count=2048 bs=1M
mkfs.ext4 -F $IMAGENAME
Installare il S.O.
mkdir -p $MOUNTPOINT
mount -o loop $IMAGENAME $MOUNTPOINT
debootstrap --arch amd64 wheezy $MOUNTPOINT http://ftp.$MIRROR.debian.org/debian
Configurare il S.O.
chroot $MOUNTPOINT
mount none -t proc /proc 
mount -t devpts none /dev/pts
export HOME=/root 
export LC_ALL=C 
apt-get install dialog dbus --yes 
dbus-uuidgen > /var/lib/dbus/machine-id 
apt-get update --yes
apt-get install --yes makedev vim locales
cd /dev
for dev in "zero null console generic std"; do MAKEDEV $dev; done
cd

Editare il file /etc/fstab immettendo il seguente contenuto:

/dev/vda1	/ 		ext4	defaults,noatime	0 0
devpts		/dev/pts		devpts	gid=5,mode=620 	0 0
tmpfs		/dev/shm	tmpfs	defaults		0 0
proc		/proc		proc	defaults		0 0
sysfs		/sys		sysfs	defaults		0 0

Editare il file /etc/network/interfaces e rimuovere riferimenti all'hostname:

echo -e 'auto eth0\niface eth0 inet dhcp' >> /etc/network/interfaces
rm -f /etc/hostname
Impostare la password di root (non obbligatorio) + customizzazione user

Questo step può essere tralasciato se si intende accedere all'account di root solo tramite chiave pubblica.

passwd
# Creazione opzione di un utente se richiesto:
# useradd myuser
# passwd myuser
# chsh myuser
Installare kernel e altri tool necessari alla contestualizzazione
apt-get install --no-install-recommends --yes linux-image-3.2.0-4-amd64 net-tools tcpdump python-cheetah python-requests python-six python python-boto python-oauth python-configobj python-prettytable python-yaml python-software-properties wget openssh-client openssh-server gparted rsync syslinux partclone python-crypto python-m2crypto python-paramiko initramfs-tools ntp ntpdate sudo curl
Installare i tools per la "cloudificazione" dell'immagine

Aggiungere il repo necessario:

echo "deb http://ftp.$MIRROR.debian.org/debian/ wheezy-backports main" >> /etc/apt/sources.list
apt-get update

Installare i cloud tools:

apt-get install --yes cloud-init cloud-utils cloud-initramfs-growroot 
Pulizia e uscita dalla sessione chroot
rm -f /var/lib/dbus/machine-id
apt-get clean
rm -rf /tmp/*
rm /etc/resolv.conf
umount /proc
umount /dev/pts
exit
Estrarre kernel e initram da caricare in openstack
cp $MOUNTPOINT/boot/vmlinuz-3.2.0-4-amd64 .
cp $MOUNTPOINT/boot/initrd.img-3.2.0-4-amd64 .
umount -l $MOUNTPOINT

Importare in glance

glance image-create --name "Debian7-kernel" --is-public True --container-format aki --disk-format aki --file vmlinuz-3.2.0-4-amd64
ID_AKI=`glance image-list |grep Debian7-kernel|awk -F '| ' '{print $2}'`
 
glance image-create --name "Debian7-ramdisk" --is-public True --container-format ari --disk-format ari --file  initrd.img-3.2.0-4-amd64
ID_ARI=`glance image-list |grep Debian7-ramdisk|awk -F '| ' '{print $2}'`
 
glance image-create --name="Debian7" --disk-format=ami --container-format=ami --is-public True --property kernel_id=$ID_AKI --property ramdisk_id=$ID_ARI < $IMAGENAME`

Nota: L'immagine così costruita una volta istanziata ha una partizione (montata in root "/") che e' resizable, nel senso che la sua dimensione eguagliera' quella specificata dal flavor col quale si è istanziata l'immagine da OpenStack.

cn/ccr/cloud/preparazione_immagini_per_debian_7.1_con_cloud-init.txt · Last modified: 2013/09/27 10:09 by dorigoa@infn.it