cn:ccr:cloud:preparazione_immagini_per_centos_5.9_e_sl5.9_con_cloud-init
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
cn:ccr:cloud:preparazione_immagini_per_centos_5.9_e_sl5.9_con_cloud-init [2013/09/24 13:28] – [Creare un file immagine] dorigoa@infn.it | cn:ccr:cloud:preparazione_immagini_per_centos_5.9_e_sl5.9_con_cloud-init [2013/09/24 17:06] (current) – dorigoa@infn.it | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ===== Preparare immagine cloud di CentOS 5.9 (x86_64) e ScientificLinux 5.9 (x86_64) ===== | ||
+ | * Alvise Dorigo (INFN Padova), Marco Caberletti (INFN-CNAF), | ||
+ | * Adattato da: [[http:// | ||
+ | ==== S.O. ==== | ||
+ | Eseguendo le seguenti istruzioni da un server x86_64, si installa un server x86_64 (anche se si specifica nella variabile release l'rpm i386). | ||
+ | |||
+ | === CentOS 5.9 x86_64 === | ||
+ | <code bash> | ||
+ | export SO=CentOS5.9 | ||
+ | export releaserpm=centos-release-5-9.el5.centos.1.x86_64.rpm | ||
+ | export releaseurl=http:// | ||
+ | export gpgkey=http:// | ||
+ | </ | ||
+ | |||
+ | === ScientificLinux 5.9 x86_64 === | ||
+ | <code bash> | ||
+ | export SO=SL5.9 | ||
+ | export releaserpm=sl-release-5.9-2.sl.x86_64.rpm | ||
+ | export releaseurl=http:// | ||
+ | export gpgkey=http:// | ||
+ | </ | ||
+ | |||
+ | === Per entrambi i S.O. === | ||
+ | <code bash> | ||
+ | export epelrpm=epel-release-5-4.noarch.rpm | ||
+ | export epelurl=http:// | ||
+ | export epelgpgurl=http:// | ||
+ | </ | ||
+ | ==== Creare un file immagine ===== | ||
+ | <code bash> | ||
+ | export IMAGELIBDIR=/ | ||
+ | mkdir -p $IMAGELIBDIR | ||
+ | export IMAGEFILE=$IMAGELIBDIR/ | ||
+ | dd if=/ | ||
+ | mkfs.ext3 -F $IMAGEFILE | ||
+ | </ | ||
+ | |||
+ | Inizializzare il db degli rpm | ||
+ | <code bash> | ||
+ | export CLOUD_MOUNTPOINT=/ | ||
+ | mkdir -p $CLOUD_MOUNTPOINT | ||
+ | mount -o loop $IMAGEFILE $CLOUD_MOUNTPOINT | ||
+ | mkdir -p $CLOUD_MOUNTPOINT/ | ||
+ | rpm --rebuilddb --root=$CLOUD_MOUNTPOINT | ||
+ | wget $releaseurl | ||
+ | rpm -i --root=$CLOUD_MOUNTPOINT --nodeps $releaserpm | ||
+ | rm -f $releaserpm | ||
+ | </ | ||
+ | |||
+ | ==Installare il SO== | ||
+ | <code bash> | ||
+ | rpm --root=$CLOUD_MOUNTPOINT --import $gpgkey | ||
+ | yum --installroot=$CLOUD_MOUNTPOINT install -y rpm-build yum initscripts kernel passwd dhclient openssh-clients openssh-server vim parted e2fsprogs sudo vim-enhanced hwdata | ||
+ | </ | ||
+ | |||
+ | ==Installare il repo EPEL=== | ||
+ | <code bash> | ||
+ | rpm --import --root=$CLOUD_MOUNTPOINT $epelgpgurl | ||
+ | wget $epelurl | ||
+ | rpm -i --root=$CLOUD_MOUNTPOINT --nodeps $epelrpm | ||
+ | rm -f $epelrpm | ||
+ | </ | ||
+ | |||
+ | == Installare il tool cloud-init == | ||
+ | <code bash> | ||
+ | yum --installroot=$CLOUD_MOUNTPOINT install -y cloud-init | ||
+ | </ | ||
+ | |||
+ | Allo stesso modo si possono installare altri RPMs che si desidera siano presenti nell’immagine. | ||
+ | |||
+ | ==Configurare il SO== | ||
+ | <code bash> | ||
+ | cat <<EOF > | ||
+ | / | ||
+ | devpts | ||
+ | tmpfs / | ||
+ | proc / | ||
+ | sysfs /sys sysfs | ||
+ | EOF | ||
+ | |||
+ | cat <<EOF > | ||
+ | NETWORKING=yes | ||
+ | NOZEROCONF=yes | ||
+ | EOF | ||
+ | |||
+ | cat <<EOF > | ||
+ | DEVICE=" | ||
+ | BOOTPROTO=" | ||
+ | ONBOOT=" | ||
+ | TYPE=" | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | Allo stesso modo si possono gestire tutti i file di configurazione che si desidera. | ||
+ | |||
+ | ==Preparare l’immagine per l’upload== | ||
+ | Settare passwd di root, aggiungere utente ec2-user, modificare sudoers | ||
+ | <code bash> | ||
+ | chroot $CLOUD_MOUNTPOINT | ||
+ | export PATH=/ | ||
+ | passwd -d root | ||
+ | echo < | ||
+ | passwd --stdin root < rootpwd | ||
+ | rm -f rootpwd | ||
+ | adduser ec2-user -G adm,wheel | ||
+ | </ | ||
+ | |||
+ | Con visudo scommentare la riga | ||
+ | <code bash> | ||
+ | %wheel | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | mkinitrd --with virtio_pci --with virtio_ring --with virtio_blk --with virtio_net --with virtio_balloon --with virtio -f / | ||
+ | |||
+ | exit | ||
+ | </ | ||
+ | |||
+ | == Copiare il kernel e il ramdisk nella directory dell’immagine == | ||
+ | <code bash> | ||
+ | cp -v $CLOUD_MOUNTPOINT/ | ||
+ | |||
+ | cp -v $CLOUD_MOUNTPOINT/ | ||
+ | |||
+ | umount $CLOUD_MOUNTPOINT | ||
+ | </ | ||
+ | ==== Importare in glance ==== | ||
+ | <code bash> | ||
+ | glance image-create --name " | ||
+ | ID_AKI=`glance image-list |grep $SO-kernel|awk -F '| ' ' | ||
+ | |||
+ | glance image-create --name " | ||
+ | ID_ARI=`glance image-list |grep $SO-ramdisk|awk -F '| ' ' | ||
+ | |||
+ | glance add name=" | ||
+ | |||
+ | </ | ||
+ | **NB**: in Horizon le aki e le ari non vengono visualizzate. Per istanziare l’immagine si lancia la ami. | ||
+ | **NB2**: Occorre la consistenza tra le tre immagini: se si vuole rendere l’immagine ami pubblica, allora lo devono essere anche la aki e la ari (anche se non vengono cmq visualizzate nella dashboard). | ||
+ | |||
+ | ==== Altre Note ==== | ||
+ | Il tutto puo’ essere facilmente scriptabile in modo da creare on demand l’immagine sempre con gli rpm e il kernel piu’ aggiornati. |
cn/ccr/cloud/preparazione_immagini_per_centos_5.9_e_sl5.9_con_cloud-init.txt · Last modified: 2013/09/24 17:06 by dorigoa@infn.it