Crea a túa propia imaxe con CentOS 5.9 puro na nube de Amazon

Como sabedes, na nube de Amazon lánzanse instancias virtuais baseadas en imaxes (as chamadas AMI). Amazon ofrece un gran número delas; tamén podes utilizar imaxes públicas elaboradas por terceiros, das que o provedor da nube, por suposto, non se fai responsable. Pero ás veces necesitas unha imaxe limpa do sistema cos parámetros necesarios, que non está na lista de imaxes. Entón, a única saída é facer a túa propia AMI.

Descríbese a documentación oficial camiño creando unha "AMI apoiada na tenda de instancias". A desvantaxe deste enfoque é que a imaxe rematada tamén terá que converterse nunha "AMI apoiada por EBS"

Neste artigo comentarase como crear a túa propia AMI apoiada por EBS na nube de Amazon sen pasos intermedios.

Plan de Acción:

  • Preparar o medio ambiente
  • Instale un sistema limpo e realice os axustes necesarios
  • Fai unha instantánea do disco
  • Rexistrarse AMI

Preparando o Medio Ambiente

Para os nosos propósitos, calquera instancia de calquera forma é adecuada, incluso t1.micro. Pode executalo a través da CLI:

aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro

Imos crear ebs-volume, onde instalaremos o noso sistema máis tarde:

aws ec2 create-volume --availability-zone us-east-1a --size 10

Este comando creará un disco de 10 Gb para nós. Importante: o disco debe estar na mesma zona que a instancia (no noso caso é us-east-1a).
A continuación, cómpre anexar o disco á instancia:

aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf

Agora imos iniciar sesión na instancia a través de ssh, formatear o disco e montámolo no directorio:

mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$

Instalación limpa Centos 5.9

Antes de instalar o sistema, cómpre crear unha árbore de directorios, montar proc e sysfs e crear un conxunto mínimo de dispositivos:

mkdir centos-image/{boot,tmp,dev,sys,proc,etc,var}
mount -t proc none /mnt/centos-image/proc/
mount -t sysfs none /mnt/centos-image/sys/
for i in console null zero ; do /sbin/MAKEDEV -d /mnt/centos-image/dev -x $i ; done

Instalaremos o sistema usando yum e o seguinte ficheiro de configuración:
yum-centos.conf

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
exclude=*-debuginfo
gpgcheck=0
obsoletes=1
reposdir=/dev/null

[base]
name=CentOS-5.9 - Base
mirrorlist=http://mirrorlist.centos.org/?release=5.9&arch=x86_64&repo=os
#baseurl=http://mirror.centos.org/centos/5.9/os/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[updates]
name=CentOS-5.9 - Updates
mirrorlist=http://mirrorlist.centos.org/?release=5.9&arch=x86_64&repo=updates
#baseurl=http://mirror.centos.org/centos/5.9/updates/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[extras]
name=CentOS-5.9 - Extras
mirrorlist=http://mirrorlist.centos.org/?release=5.9&arch=x86_64&repo=extras
#baseurl=http://mirror.centos.org/centos/5.9/extras/x86_64/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-5

[centosplus]
name=CentOS-5.9 - Plus
mirrorlist=http://mirrorlist.centos.org/?release=5.9&arch=x86_64&repo=centosplus
#baseurl=http://mirror.centos.org/centos/5.9/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-5

[contrib]
name=CentOS-5.9 - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=5.9&arch=x86_64&repo=contrib
#baseurl=http://mirror.centos.org/centos/5.9/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-5

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y groupinstall Base

Despois de completar o proceso de instalación, pode instalar os paquetes necesarios do mesmo xeito:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name

Editemos fstab:

vi /mnt/centos-image

/dev/xvda1  /      ext3    defaults        0 0
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

En CentOS 5.9 aínda necesitas instalar un núcleo con soporte xen:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen

Instalar Grub:

chroot /mnt/centos-image/ grub-install /dev/xvdf

e xera un novo initrd:

chroot /mnt/centos-image/
cd boot/
mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --fstab=/etc/fstab --preload=xenblk initrd-2.6.18-348.1.1.el5xen.img 2.6.18-348.1.1.el5xen

É moi importante especificar todos estes parámetros e un novo fstab, se non, o sistema non arrancará.
A continuación, debes crear un ficheiro menu.lst para grub:

default=0
timeout=5
hiddenmenu
title CentOS_5.9_(x86_64)
        root (hd0)
        kernel /boot/vmlinuz-2.6.18-348.1.1.el5xen ro root=/dev/xvda1
        initrd /boot/initrd-2.6.18-348.1.1.el5xen.img

Imos configurar a rede e o sshd:

vi etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
DEVICE=eth0
BOOTPROTO=dhcp
TYPE=Ethernet
USERCTL=yes
PEERDNS=yes
IPV6INIT=no

vi etc/sysconfig/network
NETWORKING=yes

chroot /mnt/centos5img/ chkconfig --level 2345 network on

vi /mnt/centos5img/etc/ssh/sshd_config
...
UseDNS no
PermitRootLogin without-password

Así, conseguiremos unha rede que funcione e a posibilidade de iniciar sesión na instancia usando as claves. Pero a chave en si debe ser transferida á instancia dalgún xeito. Isto pódese facer mediante un script que tomará a clave e gardará na instancia:

vi /mnt/centos5img/etc/init.d/ec2-get-ssh

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# nome do proceso: ec2-get-ssh
# descrición: captura as credenciais de clave pública de AWS para o usuario EC2

#Biblioteca de funcións fonte
. /etc/rc.d/init.d/functions

# Configuración da rede de orixe
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Substitúe as seguintes variables de ambiente para o seu sistema
exportar PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Comproba que a rede está configurada
if [ "${NETWORKING}" = "non" ]; entón
echo "A rede non está configurada."
saída 1
fi

start () {
se [! -d /root/.ssh ]; entón
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Recuperar a clave pública do servidor de metadatos mediante HTTP
rizo -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
se [$? -eq 0]; entón
echo "EC2: Recuperar a clave pública do servidor de metadatos mediante HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

parar() {
echo "Nada que facer aquí"
}

reiniciar () {
deixar
Comezar
}

# Mira como nos chamaban.
caso "$1" en
comezar)
Comezar
;;
parar)
deixar
;;
reiniciar)
reiniciar
;;
*)
echo $"Uso: $0 {iniciar|parar|reiniciar}"
saída 1
que C

saír de $?
Imos facelo executable e engadímolo ao inicio:

chmod +x /mnt/centos-image/etc/init.d/ec2-get-ssh
/usr/sbin/chroot /mnt/centos-image/ /sbin/chkconfig --level 34 ec2-get-ssh on

Tamén é recomendable desactivar Selinux, ou configuralo correctamente. En caso contrario, por exemplo, é posible que a chave non se garde na instancia.
Neste punto pode deixar de configurar o sistema. Xa temos CentOS puro listo para funcionar na nube. Só queda desmontar o disco ebs co noso sistema e rexistrar ami.

umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/

Rexistro AMI

Para obter ami dun disco ebs, primeiro cómpre facer unha instantánea do disco:

aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap

A forma máis sinxela de rexistrar ami é a través da Consola de xestión de AWS. Para iso, só tes que ir á sección "Instantáneas" do servizo EC2, seleccionar a que necesitas (no noso caso é centos-snap), facer clic co botón dereito sobre ela e seleccionar "Crear imaxe desde Snapshot"
A continuación, na xanela que se abre, cómpre seleccionar aproximadamente os seguintes parámetros:

Crea a túa propia imaxe con CentOS 5.9 puro na nube de Amazon

Podes saber que ID do núcleo escoller do seguinte xeito:

aws ec2 describe-images --owner amazon --region us-east-1 --output text | grep "/pv-grub-hd0.*-x86_64" | awk '{print $7}' | grep aki
aki-88aa75e1
aki-b4aa75dd

Iso é todo. Agora podes lanzar instancias.
Deste xeito, podes crear unha imaxe, moi probablemente, con calquera distribución de Linux. Polo menos, definitivamente Debian (usando debootstrap para instalar un sistema limpo) e a familia Rhel.

Fonte: www.habr.com

Engadir un comentario