Soos u weet, word virtuele gevalle in die Amazon-wolk geloods op grond van beelde (die sogenaamde
Die amptelike dokumentasie beskryf
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
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:
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