Та бүхний мэдэж байгаагаар, Амазоны үүлэнд виртуал инстанцуудыг зураг дээр үндэслэн ажиллуулдаг (гэж нэрлэгддэг
Албан ёсны баримт бичигт тайлбарлав
Завсрын алхамгүйгээр Amazon үүлэн дээр 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-bolume үүсгэцгээе:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Энэ тушаал нь бидэнд 10 Гб диск хийх болно. Анхаарах зүйл: диск нь жишээнийхтэй ижил бүсэд байх ёстой (бидний тохиолдолд энэ нь us-east-1a).
Дараа нь та дискийг жишээнд хавсаргах хэрэгтэй:
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
# Сүлжээ тохируулагдсан эсэхийг шалгана уу
хэрэв [ "${NETWORKING}" = "үгүй" ]; тэгээд
echo "Сүлжээг тохируулаагүй байна."
гарах 1
fi
эхлэх () {
хэрэв [! -d /root/.ssh ]; тэгээд
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP ашиглан мета өгөгдлийн серверээс нийтийн түлхүүрийг авах
curl -f
хэрэв [$? -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
}
Зогс() {
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 дискээ салгаад амийг бүртгэх л үлдлээ.
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 Management Console юм. Үүнийг хийхийн тулд та EC2 үйлчилгээний "Snapshots" хэсэгт очиж, хэрэгтэй зүйлээ сонгоод (манай тохиолдолд энэ нь centos-snap), хулганы баруун товчийг дараад "Snapshot-аас зураг үүсгэх" гэснийг сонгоно уу.
Дараа нь нээгдэх цонхонд та ойролцоогоор дараах параметрүүдийг сонгох хэрэгтэй.
Та аль цөмийн ID-г сонгохыг дараах байдлаар мэдэж болно.
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
Тэгээд л болоо. Одоо та жишээнүүдийг эхлүүлж болно.
Ийм байдлаар та ямар ч Линукс түгээлттэй зураг үүсгэж болно. Наад зах нь мэдээж Debian (цэвэр систем суулгахын тулд debootstrap) болон Rhel-гэр бүл.
Эх сурвалж: www.habr.com