Ma'lumki, Amazon bulutida virtual nusxalar tasvirlar asosida ishga tushiriladi (deb nomlangan
Rasmiy hujjatlar tasvirlangan
Oraliq qadamlarsiz Amazon bulutida EBS tomonidan qo'llab-quvvatlanadigan AMI-ni qanday yaratish ushbu maqolada muhokama qilinadi.
Ish rejasi:
- Atrof-muhitni tayyorlang
- Toza tizimni o'rnating va kerakli sozlamalarni bajaring
- Diskning rasmini oling
- AMI ro'yxatdan o'ting
Atrof muhitni tayyorlash
Bizning maqsadlarimiz uchun har qanday shaklning har qanday namunasi, hatto t1.micro ham mos keladi. Siz uni CLI orqali ishga tushirishingiz mumkin:
aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro
Keling, tizimimizni keyinroq o'rnatadigan ebs-volume yarataylik:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Bu buyruq biz uchun 10 Gb disk hosil qiladi. Muhim: disk namuna bilan bir xil zonada bo'lishi kerak (bizning holatlarimizda u biz-sharq-1a).
Keyinchalik, diskni misolga ulashingiz kerak:
aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf
Keling, ssh orqali misolga kiramiz, diskni formatlaymiz va uni katalogga o'rnatamiz:
mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$
Toza Centos 5.9 ni o'rnatish
Tizimni o'rnatishdan oldin siz kataloglar daraxtini yaratishingiz, proc va sysfs-ni o'rnatishingiz va minimal qurilmalar to'plamini yaratishingiz kerak:
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
Tizimni yum va quyidagi konfiguratsiya fayli yordamida o'rnatamiz:
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
O'rnatish jarayonini tugatgandan so'ng, kerakli paketlarni xuddi shu tarzda o'rnatishingiz mumkin:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name
fstab ni tahrirlaymiz:
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 da siz hali ham xen yordamiga ega yadroni o'rnatishingiz kerak:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Grubni o'rnating:
chroot /mnt/centos-image/ grub-install /dev/xvdf
va yangi initrd yarating:
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
Bu barcha parametrlarni va yangi fstabni belgilash juda muhim, aks holda tizim yuklanmaydi.
Keyin grub uchun menu.lst faylini yaratishingiz kerak:
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
Keling, tarmoq va sshd ni sozlaymiz:
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
Shunday qilib, biz ishlaydigan tarmoqqa va kalitlar yordamida misolga kirish imkoniyatiga ega bo'lamiz. Lekin kalitning o'zi qandaydir tarzda misolga o'tkazilishi kerak. Buni kalitni oladigan va uni misolda saqlaydigan skript yordamida amalga oshirish mumkin:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# jarayon nomi: ec2-get-ssh
# tavsif: EC2 foydalanuvchisi uchun AWS ochiq kalit hisob maΚΌlumotlarini yozib oling
#Manba funksiya kutubxonasi
. /etc/rc.d/init.d/functions
# Manba tarmoq konfiguratsiyasi
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network
# Tizimingiz uchun quyidagi muhit o'zgaruvchilarini almashtiring
eksport PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# Tarmoq sozlanganligini tekshiring
agar [ "${NETWORKING}" = "yo'q" ]; keyin
echo "Tarmoq sozlanmagan."
chiqish 1
fi
boshlash () {
agar [! -d /root/.ssh ]; keyin
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP yordamida metadata serveridan ochiq kalitni oling
curl -f
agar [$? -ekv 0 ]; keyin
echo "EC2: HTTP yordamida metadata serveridan ochiq kalitni oling."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}
STOP() {
echo "Bu erda qiladigan hech narsa yo'q"
}
qayta ishga tushirish() {
To'xta
start
}
# Qarang, bizni qanday chaqirishgan.
"$1" holati
boshlash)
start
;;
STOP)
To'xta
;;
qayta ishga tushirish)
qayta ishga tushirish
;;
*)
echo $"Foydalanish: $0 {start|to'xtatish|qayta ishga tushirish}"
chiqish 1
bu C
chiqish $?
Keling, uni bajariladigan qilib, ishga tushirishga qo'shamiz:
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
Bundan tashqari, Selinux-ni o'chirib qo'yish yoki uni to'g'ri sozlash tavsiya etiladi. Aks holda, masalan, kalit misolda saqlanmasligi mumkin.
Ushbu nuqtada siz tizimni o'rnatishni to'xtatishingiz mumkin. Bizda allaqachon bulutda ishlashga tayyor toza CentOS mavjud. Ebs diskini bizning tizimimiz bilan uzib qo'yish va amini ro'yxatdan o'tkazish qoladi.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
AMI ro'yxatdan o'tish
Ebs diskidan ami olish uchun avvalo diskning suratini olishingiz kerak:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Amini ro'yxatdan o'tkazishning eng oson yo'li AWS Management Console orqali amalga oshiriladi. Buni amalga oshirish uchun siz EC2 xizmatidagi "Snapshotlar" bo'limiga o'tishingiz kerak, sizga kerak bo'lganini tanlang (bizning holimizda bu centos-snap), ustiga sichqonchaning o'ng tugmachasini bosing va "Snapshotdan rasm yaratish" -ni tanlang.
Keyin ochilgan oynada siz taxminan quyidagi parametrlarni tanlashingiz kerak:
Qaysi yadro identifikatorini tanlashni quyidagi tarzda bilib olishingiz mumkin:
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
Ana xolos. Endi siz misollarni ishga tushirishingiz mumkin.
Shunday qilib, siz har qanday Linux tarqatish bilan tasvir yaratishingiz mumkin. Hech bo'lmaganda, albatta Debian (toza tizimni o'rnatish uchun debootstrap-dan foydalanish) va Rhel-oilasi.
Manba: www.habr.com