Белгилүү болгондой, Amazon булутунда виртуалдык инстанциялар сүрөттөрдүн негизинде ишке киргизилет (деп аталган ). Amazon алардын көп санын камсыз кылат; сиз ошондой эле үчүнчү жактар тарабынан даярдалган коомдук сүрөттөрдү колдоно аласыз, бул үчүн булут провайдери, албетте, эч кандай жоопкерчилик тартпайт. Бирок кээде сизге керектүү параметрлери бар таза тутум сүрөтү керек, ал сүрөттөр тизмесинде жок. Андан чыгуунун жалгыз жолу - өз AMI түзүү.
Расмий документте сүрөттөлөт "мисалы дүкөн колдогон AMI" түзүү. Бул ыкманын кемчилиги - даяр сүрөттү "EBS колдогон AMIге" айландыруу керек.
Амазонка булутунда EBS колдогон өзүңүздүн AMIңызды кантип түзүү керек, бул макалада ортоңку кадамдарсыз талкууланат.
План:
- айлана-чөйрөнү даярдоо
- Таза системаны орнотуп, керектүү орнотууларды жасаңыз
- Дисктин сүрөтүн тартыңыз
- AMI каттоо
Айлана-чөйрөнү даярдоо
Биздин максаттар үчүн, ар кандай формадагы, ал тургай t1.micro да ылайыктуу. Сиз аны CLI аркылуу иштете аласыз:
aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro
Келгиле, ebs-том түзөлү, анда системабызды кийинчерээк орнотобуз:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Бул буйрук биз үчүн 10 Гб дискти түзөт. Маанилүү: диск инстанция менен бир зонада болушу керек (биздин учурда бул биз-чыгыш-1а).
Андан кийин, инстанцияга дискти тиркөөңүз керек:
aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf
Эми ssh аркылуу инстанцияга кирип, дискти форматтап, аны каталогго орнотуп алалы:
mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$
Таза Centos 5.9 орнотуу
Системаны орнотуудан мурун, сиз каталог дарагын түзүп, proc жана sysfs орнотуп, түзмөктөрдүн минималдуу топтомун түзүшүңүз керек:
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
Биз системаны yum жана төмөнкү конфигурация файлын колдонуп орнотобуз:
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
Орнотуу процессин аяктагандан кийин, сиз керектүү пакеттерди ушул эле жол менен орното аласыз:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name
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
CentOS 5.9да дагы эле xen колдоосу менен ядро орнотуу керек:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Grub орнотуу:
chroot /mnt/centos-image/ grub-install /dev/xvdf
жана жаңы 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
Бул бардык параметрлерди жана жаңы fstab көрсөтүү абдан маанилүү, антпесе система жүктөлбөйт.
Андан кийин grub үчүн menu.lst файлын түзүшүңүз керек:
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
Тармакты жана 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
Ошентип, биз жумушчу тармакка ээ болобуз жана баскычтар аркылуу инстанцияга кирүү мүмкүнчүлүгүнө ээ болобуз. Бирок ачкычтын өзү кандайдыр бир жол менен инстанцияга өтүшү керек. Бул ачкычты алып, аны мисалга сактай турган скрипт аркылуу жасалышы мүмкүн:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# процесстин аты: ec2-get-ssh
# сүрөттөмө: EC2 колдонуучусу үчүн AWS ачык ачкычынын эсептик дайындарын басып алыңыз
#Булак функциясынын китепканасы
. /etc/rc.d/init.d/functions
# Тармактын булагы конфигурациясы
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network
# Системаңыз үчүн төмөнкү чөйрө өзгөрмөлөрүн алмаштырыңыз
экспорт PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# Тармак конфигурацияланганын текшериңиз
if [ "${NETWORKING}" = "жок" ]; анда
echo "Тармак конфигурацияланган эмес."
чыгуу 1
fi
баштоо () {
эгерде [! -d /root/.ssh ]; анда
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP аркылуу метадайындар серверинен ачык ачкычты алуу
curl -f > /tmp/my-public-key
эгерде [$? -eq 0 ]; анда
echo "EC2: HTTP аркылуу метадата серверинен ачык ачкычты алуу."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}
stop() {
echo "Бул жерде кыла турган эч нерсе жок"
}
кайра жүргүзүү() {
токтотуу
баштоо
}
# Карачы, бизди кандай чакырышкан.
"$1" корпусу
баштоо)
баштоо
;;
токто)
токтотуу
;;
кайра жүргүзүү)
кайра жүргүзүү
;;
*)
echo $"Колдонуу: $0 {баштоо|токтотуу|кайра баштоо}"
чыгуу 1
ошол C
$? чыгуу
Келгиле, аны аткарылуучу кылып, баштоого кошолу:
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
Ошондой эле Selinuxту өчүрүү же аны туура конфигурациялоо сунушталат. Болбосо, мисалы, ачкыч инстанцияда сакталбай калышы мүмкүн.
Бул учурда сиз системаны орнотууну токтотсоңуз болот. Бизде булутта иштөөгө даяр таза CentOS бар. Болгону биздин система менен ebs дискин ажыратып, ami каттоодон өткөрүү гана калды.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
AMI каттоо
ebs дискинен ami алуу үчүн, алгач дисктин сүрөтүн алуу керек:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Ами каттоонун эң оңой жолу - AWS башкаруу консолу. Бул үчүн, сиз жөн гана EC2 кызматындагы "Сүрөттөр" бөлүмүнө өтүп, керектүүсүн тандап алышыңыз керек (биздин учурда бул centos-snap), аны оң баскыч менен чыкылдатып, "Сүрөттөн сүрөт түзүү" дегенди тандаңыз.
Андан кийин, ачылган терезеде болжол менен төмөнкү параметрлерди тандоо керек:

Кайсы ядро идентификаторун тандоону төмөнкүдөй биле аласыз:
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
Баары болду. Эми сиз инстанцияларды иштете аласыз.
Ушундай жол менен сиз кандайдыр бир Linux дистрибуциясы менен сүрөттү түзө аласыз. Жок дегенде, сөзсүз Debian (таза системаны орнотуу үчүн debootstrap колдонуу) жана Rhel-үй-бүлө.
Source: www.habr.com
