User Tools

Site Tools


Sidebar

cn:ccr:cloud:preparazione_immagini_per_centos_6.4_e_sl6.4_con_cloud-init

Preparare immagine cloud di CentOS 6.4 (x86_64) e ScientificLinux 6.4 (x86_64)

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 6.4 x86_64

export SO=CentOS64-x86_64
export release=http://bo.mirror.garr.it/mirrors/CentOS/6.4/os/x86_64/Packages/centos-release-6-4.el6.centos.10.x86_64.rpm
export key=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

ScientificLinux 6.4 x86_64

export SO=SL64-x86_64
export release=http://mirror.crazynetwork.it/scientificlinux/6x/x86_64/os/Packages/sl-release-6.4-1.x86_64.rpm
export key=http://mirror.crazynetwork.it/scientificlinux/6.4/x86_64/os/RPM-GPG-KEY-sl6 

Creare un file immagine

mkdir -p /mnt/scratch/cloud-image
dd if=/dev/zero of=/mnt/scratch/cloud-image/cloud-image.img bs=1024 count=1048576
mkfs.ext3 /mnt/scratch/cloud-image/cloud-image.img

Inizializzare il db degli rpm

mkdir /mnt/cloud-image
mount -o loop /mnt/scratch/cloud-image/cloud-image.img /mnt/cloud-image
mkdir -p /mnt/cloud-image/var/lib/rpm
rpm --rebuilddb --root=/mnt/cloud-image
rpm -i --root=/mnt/cloud-image/ --nodeps $release
Installare il SO
rpm --root=/mnt/cloud-image/ --import $key 
yum --installroot=/mnt/cloud-image install -y rpm-build yum initscripts kernel passwd dhclient openssh-clients openssh-server vim parted e2fsprogs sudo vim-enhanced
Installare il repo EPEL
yum --installroot=/mnt/cloud-image install -y http://mirror.serverbeheren.nl/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --root=/mnt/cloud-image/ --import /mnt/cloud-image/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
Installare rpm dal repo EPEL necessari
yum --installroot=/mnt/cloud-image install -y dracut-modules-growroot cloud-init cloud-utils

Allo stesso modo si possono installare altri RPMs che si desidera siano presenti nell’immagine.

Configurare il SO
cat <<EOF >/mnt/cloud-image/etc/fstab
/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
EOF
 
cat <<EOF >/mnt/cloud-image/etc/sysconfig/network
NETWORKING=yes
NOZEROCONF=yes
EOF
 
cat <<EOF >/mnt/cloud-image/etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
BOOTPROTO="dhcp"
ONBOOT="yes"
TYPE="Ethernet"
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

chroot /mnt/cloud-image/
export PATH=/sbin:/bin:/usr/bin:/usr/sbin
passwd
adduser ec2-user -G adm,wheel

Con visudo scommentare la riga

%wheel  ALL=(ALL)       NOPASSWD: ALL
mkinitrd --with virtio_pci --with virtio_ring --with virtio_blk --with virtio_net --with virtio_balloon --with virtio -f /boot/initramfs-$(ls /lib/modules/).img $(ls /lib/modules/)
 
exit
Copiare il kernel e il ramdisk nella directory dell’immagine
cp -v /mnt/cloud-image/boot/initramfs-*img /mnt/scratch/cloud-image/
 
cp -v /mnt/cloud-image/boot/vmlinuz*  /mnt/scratch/cloud-image/
 
umount /mnt/cloud-image/

Importare in glance

glance image-create --name "$SO-kernel" --is-public True --container-format aki --disk-format aki < /mnt/scratch/cloud-image/vmlinuz-2.6.32-358.14.1.el6.x86_64 
ID_AKI=`glance image-list |grep $SO-kernel|awk -F '| ' '{print $2}'`
 
glance image-create --name "$SO-ramdisk" --is-public True --container-format ari --disk-format ari < /mnt/scratch/cloud-image/initramfs-2.6.32-358.14.1.el6.x86_64.img 
ID_ARI=`glance image-list |grep $SO-ramdisk|awk -F '| ' '{print $2}'`
 
glance add name="$SO" is_public=True container_format=ami disk_format=ami kernel_id=$ID_AKI ramdisk_id=$ID_ARI < /mnt/scratch/cloud-image/cloud-image.img

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_6.4_e_sl6.4_con_cloud-init.txt · Last modified: 2013/08/01 08:49 by pveronesi@infn.it