Creant la teva pròpia imatge amb CentOS 5.9 pur al núvol d'Amazon

Com sabeu, al núvol d'Amazon es llancen instàncies virtuals basades en imatges (l'anomenada AMI). Amazon n'ofereix un gran nombre; també podeu utilitzar imatges públiques elaborades per tercers, de les quals el proveïdor de núvol, per descomptat, no assumeix cap responsabilitat. Però de vegades necessiteu una imatge del sistema neta amb els paràmetres necessaris, que no es troba a la llista d'imatges. Llavors, l'única sortida és crear la teva pròpia AMI.

La documentació oficial descriu camí creant una "AMI recolzada per la botiga d'instàncies". El desavantatge d'aquest enfocament és que la imatge acabada també s'haurà de convertir en una "AMI recolzada per EBS"

En aquest article es parlarà de com crear la vostra pròpia AMI recolzada per EBS al núvol d'Amazon sense passos intermedis.

Pla d'acció:

  • Preparar l'entorn
  • Instal·leu un sistema net i feu els paràmetres necessaris
  • Feu una instantània del disc
  • Registre AMI

Preparant el Medi Ambient

Per als nostres propòsits, qualsevol instància de qualsevol forma és adequada, fins i tot t1.micro. Podeu executar-lo mitjançant la CLI:

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

Creem ebs-volume, on instal·larem el nostre sistema més tard:

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

Aquesta ordre ens farà un disc de 10 Gb. Important: el disc ha d'estar a la mateixa zona que la instància (en el nostre cas és us-east-1a).
A continuació, heu d'adjuntar el disc a la instància:

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

Ara iniciem sessió a la instància mitjançant ssh, formem el disc i muntem-lo al directori:

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

Instal·lació net Centos 5.9

Abans d'instal·lar el sistema, heu de crear un arbre de directoris, muntar proc i sysfs i crear un conjunt mínim de dispositius:

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

Instal·larem el sistema amb yum i el següent fitxer de configuració:
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

Després de completar el procés d'instal·lació, podeu instal·lar els paquets necessaris de la mateixa manera:

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

Editem 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

A CentOS 5.9 encara necessiteu instal·lar un nucli amb suport xen:

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

Instal·leu Grub:

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

i genereu un nou 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

És molt important especificar tots aquests paràmetres i un nou fstab, en cas contrari el sistema no arrencarà.
A continuació, heu de crear un fitxer menu.lst per a 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

Configurem la xarxa i 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

Així, obtindrem una xarxa que funcioni i la possibilitat d'iniciar sessió a la instància mitjançant les claus. Però la clau en si s'ha de transferir a la instància d'alguna manera. Això es pot fer mitjançant un script que agafarà la clau i la desarà a la instància:

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

ec2-get-ssh#! / Bin / bash
# chkconfig: 2345 95 20
# nom del procés: ec2-get-ssh
# descripció: captura les credencials de la clau pública d'AWS per a l'usuari EC2

Biblioteca de funcions #Source
. /etc/rc.d/init.d/functions

# Configuració de xarxa d'origen
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Substituïu les variables d'entorn següents per al vostre sistema
exportar PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Comproveu que la xarxa estigui configurada
if [ "${NETWORKING}" = "no" ]; aleshores
echo "La xarxa no està configurada."
exit 1
fi

començar () {
si [! -d /root/.ssh]; aleshores
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Recupereu la clau pública del servidor de metadades mitjançant HTTP
rínxol -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
si [$? -eq 0]; aleshores
echo "EC2: recupera la clau pública del servidor de metadades mitjançant HTTP".
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

Atura() {
echo "No hi ha res a fer aquí"
}

reinicia() {
aturar
Començar
}

# Mira com ens van trucar.
cas "$1" a
començar)
Començar
;;
Atura)
aturar
;;
reinicia)
reprendre
;;
*)
echo $"Ús: $0 {inici|aturar|reiniciar}"
exit 1
esac

èxit $?
Fem-lo executable i l'afegim a l'inici:

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

També és recomanable desactivar Selinux, o configurar-lo correctament. En cas contrari, per exemple, és possible que la clau no es desi a la instància.
En aquest punt, podeu deixar de configurar el sistema. Ja tenim CentOS pur a punt per funcionar al núvol. Només queda desmuntar el disc ebs amb el nostre sistema i registrar ami.

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

Registre AMI

Per obtenir ami des d'un disc ebs, primer heu de fer una instantània del disc:

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

La manera més senzilla de registrar ami és mitjançant la Consola de gestió d'AWS. Per fer-ho, només cal que aneu a la secció "Instantània" del servei EC2, seleccioneu la que necessiteu (en el nostre cas és centos-snap), feu-hi clic amb el botó dret i seleccioneu "Crea una imatge des de la instantània".
Aleshores, a la finestra que s'obre, heu de seleccionar aproximadament els paràmetres següents:

Creant la teva pròpia imatge amb CentOS 5.9 pur al núvol d'Amazon

Podeu esbrinar quin ID del nucli triar de la següent manera:

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

Això és tot. Ara podeu llançar instàncies.
D'aquesta manera, podeu crear una imatge, molt probablement, amb qualsevol distribució de Linux. Almenys, definitivament Debian (utilitzant debootstrap per instal·lar un sistema net) i la família Rhel.

Font: www.habr.com

Afegeix comentari