Эҷоди тасвири шахсии худ бо CentOS 5.9 дар абри Amazon

Тавре ки шумо медонед, дар абрҳои Amazon инстансияҳои виртуалӣ дар асоси тасвирҳо (ба ном AMI). Amazon шумораи зиёди онҳоро таъмин мекунад; шумо инчунин метавонед тасвирҳои оммавии аз ҷониби шахсони сеюм таҳияшударо истифода баред, ки барои онҳо провайдери абр, албатта, ҳеҷ гуна масъулият надорад. Аммо баъзан ба шумо тасвири системаи тоза бо параметрҳои зарурӣ лозим аст, ки дар рӯйхати тасвирҳо нест. Он гоҳ роҳи ягонаи баромадан ин сохтани AMI-и худ аст.

Ҳуҷҷатҳои расмӣ тавсиф мекунанд роҳ эҷод кардани "AMI аз мағозаи намунавӣ". Камбудии ин равиш дар он аст, ки тасвири тайёр инчунин бояд ба "AMI-и аз ҷониби EBS дастгирӣшаванда" табдил дода шавад.

Чӣ тавр сохтани AMI-и худро аз ҷониби EBS дар абри Амазонка бидуни қадамҳои мобайнӣ дар ин мақола муҳокима хоҳад кард.

Нақшаи амал:

  • Муҳити зистро омода кунед
  • Системаи тозаро насб кунед ва танзимоти заруриро созед
  • Сурати дискро гиред
  • 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-volume эҷод кунем, ки дар он системаи худро дертар насб мекунем:

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 нав хеле муҳим аст, вагарна система бор намекунад.
Минбаъд шумо бояд файли menu.lst-ро барои grub эҷод кунед:

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
# тавсиф: Маълумоти калиди ҷамъиятии AWS-ро барои корбари EC2 сабт кунед

#Китобхонаи функсияи манбаъ
. /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 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
агар [$? -экв 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

Барои гирифтани ami аз диски ebs, шумо аввал бояд акси дискро гиред:

aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap

Роҳи осонтарини бақайдгирии ami ин тавассути Console Management AWS мебошад. Барои ин, ба шумо лозим аст, ки ба бахши "Snapshots" дар хидмати EC2 равед, онеро, ки ба шумо лозим аст, интихоб кунед (дар ҳолати мо ин centos-snap аст), онро бо тугмаи рост клик кунед ва "Эҷоди тасвир аз акс" -ро интихоб кунед.
Пас, дар равзанаи кушодашуда, шумо бояд тақрибан параметрҳои зеринро интихоб кунед:

Эҷоди тасвири шахсии худ бо CentOS 5.9 дар абри Amazon

Шумо метавонед фаҳмед, ки кадом 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

Ҳамааш ҳамин. Акнун шумо метавонед мисолҳоро оғоз кунед.
Бо ин роҳ, шумо метавонед тасвиреро эҷод кунед, эҳтимолан бо ҳама тақсимоти Linux. Ҳадди ақал, бешубҳа Debian (бо истифода аз debootstrap барои насб кардани системаи тоза) ва Rhel-оила.

Манбаъ: will.com

Илова Эзоҳ