Creación de una AMI personalizada

25 septiembre 2011 at 19:54 by Adrián Pérez

cloud computingAmazon, entre muchos otros, ofrece un servicio de cloud computing, en el que podemos crear máquinas a partir de imágenes de sistemas operativos preconfigurados compartidos en la red de Amazon. Estas imágenes se conocen como AMIs (Amazon Machine Image).

Sin embargo, se puede dar la ocasión en la que necesitemos instalar una máquina con un determinado sistema, que no se encuentre entre las diversas AMIs disponibles. En esas ocasiones, deberemos seguir las instrucciones de Amazon para la creación de una AMI personalizada.

Instalación de las herramientas

yum install ruby

Descarga del rpm con las herramientas, desde http://aws.amazon.com/developertools/368?_encoding=UTF8&jiveRedirect=1 Instalación de las herramientas (requiere contar con el paquete rsync instalado)

rpm -i ec2-ami-tools-x.x-xxxx.i386.rpm

Creación de la AMI

Creamos un archivo vacío lleno de "ceros" de 2GB (1GB no ha sido suficiente, en las pruebas realizadas) de nombre fedora13x64.fs, que se dejará en el directorio de trabajo actual. (Fuente)

dd if=/dev/zero of=fedora13x64.fs bs=1M count=2048

Una vez creado el fichero, lo formatearemos con el siguiente comando (esto únicamente afectará al fichero fedora13x64.fs, y no al sistema de ficheros de la propia máquina.):

mke2fs -t ext4 -F -j fedora13x64.fs

A continuación, se deberá crear en el sistema de ficheros de la propia máquina, un punto de montaje en el que colgar el sistema que se está creando.

mdir /mnt/fedora13x64 mount -o loop fedora13x64.fs /mnt/fedora13x64

Una vez montado, se deberá empezar a crear el sistema de archivos, a partir del punto de montaje.

cd /mnt/fedora13x64 mkdir dev /sbin/MAKEDEV -d /mnt/fedora13x64/dev -x console /sbin/MAKEDEV -d /mnt/fedora13x64/dev -x null /sbin/MAKEDEV -d /mnt/fedora13x64/dev -x zero

NOTA: Los tres comandos anteriores devolverán el siguiente mensaje:

MAKEDEV: mkdir: File exists MAKEDEV: mkdir: File exists MAKEDEV: mkdir: File exists

A continuación se creará el fichero /mnt/fedora13x64/fstab con la siguiente información

/dev/sda1  /         ext4    defaults        1 1
none       /dev/pts  devpts  gid=5,mode=620  0 0
none       /dev/shm  tmpfs   defaults        0 0
none       /proc     proc    defaults        0 0
none       /sys      sysfs   defaults        0 0

El sistema operativo se instalará desde los repositorios mediante yum. Para ello, se creará un fichero en /mnt/fedora13x64 llamado yum.conf con el siguiente contenido:

[main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log exclude=*-debuginfo gpgcheck=0 obsoletes=1 reposdir=/dev/null [base] name=Fedora 13- x86_64 - Base mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-13&arch=x86_64 enabled=1 [updates-released] name=Fedora13 - x86_64Released Updates mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f13&arch=x86_64 enabled=1

Se ha querido instalar Fedora 13 64 bits, por lo que los mirrorlist de las secciones "base" y "update" se han configurado convenientemente para usar los repositorios correctos. Posteriormente se ha configurado /proc

mkdir /mnt/fedora13x64/proc mount -t proc none /mnt/fedora13x64/proc

Una vez configurado el entorno, se ha procedido a instalar el sistema en el punto de montaje correspondiente al fichero con la imagen amazon:

yum -c /mnt/fedora13x64/yum.conf --installroot=/mnt/fedora13x64/ -y groupinstall Base

Configuración de la AMI

Tras la instalación del sistema base, se tendrá dentro de /mnt/fedora13x64 un sistema de ficheros con sus directorios correspondientes. Sin embargo, será necesario modificar la red y la configuración del disco para que la imagen pueda trabajar en Amazon.

En primer lugar, se deberá crear el archivo /mnt/fedora13x64/etc/sysconfig/network-scripts/ifcfg-eth0 con los siguientes datos:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no

A continuación, se creará el fichero /mnt/fedora13x64/etc/sysconfig/network con la siguiente línea:

NETWORKING=yes

En cuanto al disco, será necesario mover el fichero fstab de /mnt/fedora13x64 a /mnt/fedora13x64/etc, y añadirle las siguientes líneas para incluir la partición de swap.

/dev/sda2  /mnt      ext4    defaults        0 0
/dev/sda3  swap      swap    defaults        0 0

Para añadir los servicios al inicio, como el servicio network, se deberá ejecutar lo siguiente:

chroot /mnt/ec2-fs /bin/sh
chkconfig --level 345 network on
exit

Una vez realizados los cambios, se podrá desmontar la imagen.

umount /mnt/fedora13x64/proc
umount -d /mnt/fedora13x64

Importación de la AMI

Tras la configuración de la AMI, será necesario usar las tools de amazon para crear los ficheros con la imagen, e importarlos.

ec2-bundle-image -k pk-XXXXX.pem -c cert-XXXX.pem -u YYYYY -i fedora13x64.img -d bundled -p fedora13x64 -r x86_64

  • En primer lugar se deberá renombrar el fichero fedora13x64.fs a fedora13x64.img, para posteriormente pasarlo en el parámetro -i
  • Los detalles de la claveprivada y el certificado, se pueden obtener desde la consola web AWS, una vez logueado, pinchando sobre el nombre del usuario logueado > "Security Credentials", desde la sección "Credenciales de acceso" > "Certificados x.509 ".
  • El userid, se puede obtener desde la misma web, en la sección"identificador de cuentas", donde se encontrará en "identificador de cuentas AWS" (que se introducirá sin los separadores).
  • -d indica el directorio local donde se guardarán los archivos listos para subir, resultantes de la ejecución del comando
  • -p se usará para darle nombre a los archivos resultantes
  • -r indicará el tipo de plataforma

Una vez creados los ficheros, se podrán subir a Amazon S3 con el siguiente comando

ec2-upload-bundle -b bucket/directorio -m fedora13x64.manifest.xml -a XXXXX -s YYYYYY

  • En este caso, bucket/directorio será el nombre del bucket en Amazon S3, el cual tendrá un directorio llamado directorio. Si no existe, se podrá crear desde la interfaz AWS de administración. NOTA: El bucket deberá estar en la misma región Amazon desde la que se desea poder usar la AMI.
  • -m corresponderá con la ruta del manifiesto xml creado con la instrucción anterior.
  • -a y -s, en este caso, serán los detalles de certificados, que se podrán encontrar en "Security Credentials", desde la sección "Credenciales de acceso" > "Pares de claves"

Finalmente, una vez subidos los ficheros, se podrá crear la AMI desde la interfaz web AWS > Amazon Elastic Compute Cloud (EC2) > Images > AMIs>Register New Ami.

Fuente: http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/index.html?creating-loopback-s3-linux.html

Flickr! Foto por karindalziel