Amazon bulutida sof CentOS 5.9 yordamida o'z rasmingizni yaratish

Ma'lumki, Amazon bulutida virtual nusxalar tasvirlar asosida ishga tushiriladi (deb nomlangan AMI). Amazon ularning ko'p sonini taqdim etadi, shuningdek, siz uchinchi shaxslar tomonidan tayyorlangan ommaviy tasvirlardan foydalanishingiz mumkin, ular uchun bulut provayderi, albatta, hech qanday javobgarlikni o'z zimmasiga olmaydi. Lekin ba'zida sizga kerakli parametrlarga ega toza tizim tasviri kerak bo'ladi, bu tasvirlar ro'yxatida yo'q. Keyin yagona yo'l - o'z AMI-ni yaratish.

Rasmiy hujjatlar tasvirlangan jarayon "namunalar do'koni tomonidan qo'llab-quvvatlanadigan AMI" ni yaratish. Ushbu yondashuvning kamchiliklari shundaki, tayyor tasvirni "EBS tomonidan qo'llab-quvvatlanadigan AMI" ga aylantirish kerak bo'ladi.

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 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
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:

Amazon bulutida sof CentOS 5.9 yordamida o'z rasmingizni yaratish

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

a Izoh qo'shish