Skep jou eie beeld met pure CentOS 5.9 in die Amazon-wolk

Soos u weet, word virtuele gevalle in die Amazon-wolk geloods op grond van beelde (die sogenaamde AMI). Amazon verskaf 'n groot aantal daarvan; jy kan ook openbare beelde gebruik wat deur derde partye voorberei is, waarvoor die wolkverskaffer natuurlik geen verantwoordelikheid dra nie. Maar soms benodig jy 'n skoon stelselbeeld met die nodige parameters, wat nie in die lys van beelde is nie. Dan is die enigste uitweg om jou eie AMI te maak.

Die amptelike dokumentasie beskryf manier van die skep van 'n "instansie winkel-gesteunde AMI". Die nadeel van hierdie benadering is dat die voltooide beeld ook omgeskakel moet word in 'n "EBS-gesteunde AMI"

Hoe om jou eie EBS-gesteunde AMI in die Amazon-wolk te skep sonder tussenstappe, sal in hierdie artikel bespreek word.

Aksieplan:

  • Berei die omgewing voor
  • Installeer 'n skoon stelsel en maak die nodige instellings
  • Neem 'n momentopname van die skyf
  • Registreer AMI

Voorbereiding van die omgewing

Vir ons doeleindes is enige geval van enige vorm geskik, selfs t1.micro. U kan dit via die CLI laat loop:

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

Kom ons skep ebs-volume, waar ons ons stelsel later sal installeer:

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

Hierdie opdrag sal 'n 10 Gb-skyf vir ons maak. Belangrik: die skyf moet in dieselfde sone as die instansie wees (in ons geval is dit us-east-1a).
Vervolgens moet u die skyf aan die instansie heg:

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

Kom ons meld nou aan by die instansie via ssh, formateer die skyf en monteer dit in die gids:

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

Installeer skoon Centos 5.9

Voordat u die stelsel installeer, moet u 'n gidsboom skep, proc en sysfs monteer, en 'n minimum stel toestelle skep:

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

Ons sal die stelsel installeer met yum en die volgende konfigurasielêer:
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

Nadat u die installasieproses voltooi het, kan u enige nodige pakkette op dieselfde manier installeer:

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

Kom ons wysig 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

In CentOS 5.9 moet jy steeds 'n kern installeer met xen-ondersteuning:

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

Installeer Grub:

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

en genereer 'n nuwe 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

Dit is baie belangrik om al hierdie parameters en 'n nuwe fstab te spesifiseer, anders sal die stelsel nie selflaai nie.
Vervolgens moet jy 'n menu.lst-lêer vir grub skep:

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

Kom ons stel die netwerk en sshd op:

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

Ons sal dus 'n werkende netwerk kry en die vermoë om met die sleutels by die instansie aan te meld. Maar die sleutel self moet op een of ander manier na die instansie oorgedra word. Dit kan gedoen word met 'n skrip wat die sleutel sal neem en dit op die instansie sal stoor:

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

ec2-kry-ssh#! / bin / bash
# chkconfig: 2345 95 20
# prosesnaam: ec2-get-ssh
# beskrywing: Vang AWS publieke sleutel geloofsbriewe vir EC2 gebruiker

#Bronfunksiebiblioteek
. /etc/rc.d/init.d/functions

# Bronnetwerkkonfigurasie
[ -r /etc/sysconfig/netwerk ] &&. /etc/sysconfig/netwerk

# Vervang die volgende omgewingsveranderlikes vir jou stelsel
uitvoer PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Kontroleer dat netwerk opgestel is
if [ "${NETWORKING}" = "nee" ]; dan
eggo "Netwerk is nie opgestel nie."
uitgang 1
fi

begin () {
as [! -d /root/.ssh ]; dan
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Haal publieke sleutel van metadata-bediener af met behulp van HTTP
krul -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-publieke sleutel
as [$? -vgl 0]; dan
eggo "EC2: Haal publieke sleutel van metadata-bediener af met behulp van HTTP."
kat /tmp/my-publieke sleutel >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-publieke sleutel
fi
}

stop() {
eggo "Niks om hier te doen nie"
}

begin oor() {
stop
Begin
}

# Kyk hoe ons geroep is.
geval "$ 1" in
begin)
Begin
;;
stop)
stop
;;
begin oor)
herlaai
;;
*)
eggo $"Gebruik: $0 {begin|stop|herbegin}"
uitgang 1
dat C

$ verlaat?
Kom ons maak dit uitvoerbaar en voeg dit by opstart:

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

Dit is ook raadsaam om Selinux te deaktiveer, of dit korrek op te stel. Andersins kan die sleutel byvoorbeeld nie op die instansie gestoor word nie.
Op hierdie punt kan jy ophou om die stelsel op te stel. Ons het reeds pure CentOS gereed om in die wolk te loop. Al wat oorbly is om die ebs-skyf met ons stelsel te ontkoppel en ami te registreer.

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

AMI registrasie

Om ami van 'n ebs-skyf af te kry, moet jy eers 'n momentopname van die skyf neem:

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

Die maklikste manier om ami te registreer, is deur die AWS Management Console. Om dit te doen, hoef jy net na die "Snapshots"-afdeling in die EC2-diens te gaan, die een te kies wat jy nodig het (in ons geval is dit centos-snap), regskliek daarop en kies "Skep Beeld vanaf Snapshot"
Dan, in die venster wat oopmaak, moet jy ongeveer die volgende parameters kies:

Skep jou eie beeld met pure CentOS 5.9 in die Amazon-wolk

U kan soos volg uitvind watter kern-ID om te kies:

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

Dis al. Nou kan jy gevalle begin.
Op hierdie manier kan jy 'n beeld skep, heel waarskynlik, met enige Linux-verspreiding. Ten minste, beslis Debian (gebruik debootstrap om 'n skoon stelsel te installeer) en Rhel-familie.

Bron: will.com

Voeg 'n opmerking