User Tools

Site Tools


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

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
cn:ccr:cloud:preparazione_immagini_per_debian_7.1_con_cloud-init [2013/09/19 09:08] – [Importare in glance] dorigoa@infn.itcn:ccr:cloud:preparazione_immagini_per_debian_7.1_con_cloud-init [2013/09/27 10:09] (current) dorigoa@infn.it
Line 1: Line 1:
 +===== Preparare immagine cloud di Debian 7.1 Wheezy (x86_64) =====
 +   * Alvise Dorigo (INFN Padova)
 +   * Inspirato a: [[http://wiki.infn.it/cn/ccr/cloud/preparazione_immagini_per_centos_6.4_e_sl6.4_con_cloud-init|Preparazione immagini per CentOS 6.4 e SL 6.4 con cloud-init]]
 +   * Adattato da: [[http://willhaley.com/blog/create-a-custom-debian-live-environment|Create a custom debian live environment]]
 +   * Altra fonte: [[http://linuxconfig.org/howto-create-bundle-upload-and-access-custom-debian-ami-using-ubuntu|Howto CREATE BUNDLE UPLOAD and ACCESS custom Debian AMI using ubuntu]]
  
 +==== 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
 +
 +<code bash>
 +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
 +</code>
 +==== Creare il sistema operativo minimale =====
 +
 +== Creare un file immagine block device ==
 +<code bash>
 +dd if=/dev/zero of=$IMAGENAME count=2048 bs=1M
 +mkfs.ext4 -F $IMAGENAME
 +</code>
 +
 +== Installare il S.O. ==
 +<code bash>
 +mkdir -p $MOUNTPOINT
 +mount -o loop $IMAGENAME $MOUNTPOINT
 +debootstrap --arch amd64 wheezy $MOUNTPOINT http://ftp.$MIRROR.debian.org/debian
 +</code>
 +
 +== Configurare il S.O. ==
 +<code bash>
 +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
 +</code>
 +Editare il file /etc/fstab immettendo il seguente contenuto:
 +<code bash>
 +/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
 +</code>
 +
 +Editare il file /etc/network/interfaces e rimuovere riferimenti all'hostname:
 +<code bash>
 +echo -e 'auto eth0\niface eth0 inet dhcp' >> /etc/network/interfaces
 +rm -f /etc/hostname
 +</code>
 +
 +== 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.
 +<code bash>
 +passwd
 +# Creazione opzione di un utente se richiesto:
 +# useradd myuser
 +# passwd myuser
 +# chsh myuser
 +</code>
 +
 +== Installare kernel e altri tool necessari alla contestualizzazione ==
 +<code bash>
 +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
 +</code>
 +
 +== Installare i tools per la "cloudificazione" dell'immagine ==
 +Aggiungere il repo necessario:
 +<code bash>
 +echo "deb http://ftp.$MIRROR.debian.org/debian/ wheezy-backports main" >> /etc/apt/sources.list
 +apt-get update
 +</code>
 +Installare i cloud tools:
 +<code bash>
 +apt-get install --yes cloud-init cloud-utils cloud-initramfs-growroot 
 +</code>
 +
 +== Pulizia e uscita dalla sessione chroot ==
 +<code bash>
 +rm -f /var/lib/dbus/machine-id
 +apt-get clean
 +rm -rf /tmp/*
 +rm /etc/resolv.conf
 +umount /proc
 +umount /dev/pts
 +exit
 +</code>
 +
 +== Estrarre kernel e initram da caricare in openstack ==
 +<code bash>
 +cp $MOUNTPOINT/boot/vmlinuz-3.2.0-4-amd64 .
 +cp $MOUNTPOINT/boot/initrd.img-3.2.0-4-amd64 .
 +umount -l $MOUNTPOINT
 +</code>
 +==== Importare in glance ====
 +<code bash>
 +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`
 +</code>
 +
 +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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki