Amazon buludunda təmiz CentOS 5.9 ilə öz imicinizi yaratmaq

Bildiyiniz kimi, Amazon buludunda virtual instansiyalar şəkillər əsasında işə salınır (sözdə AMI). Amazon onların çoxlu sayda təqdim edir; siz həmçinin üçüncü tərəflər tərəfindən hazırlanmış ictimai şəkillərdən istifadə edə bilərsiniz, bunun üçün bulud provayderi, əlbəttə ki, heç bir məsuliyyət daşımır. Ancaq bəzən şəkillər siyahısında olmayan lazımi parametrləri olan təmiz sistem şəklinə ehtiyacınız var. Onda yeganə çıxış yolu öz AMI-ni yaratmaqdır.

Rəsmi sənədlər təsvir edir yol "nümunə mağazası tərəfindən dəstəklənən AMI" yaratmaq. Bu yanaşmanın dezavantajı odur ki, bitmiş görüntü də "EBS dəstəkli AMI"-yə çevrilməlidir.

Aralıq addımlar olmadan Amazon buludunda öz EBS dəstəkli AMI-nizi necə yaratmaq bu məqalədə müzakirə olunacaq.

Fəaliyyət Planı:

  • Ətraf mühiti hazırlayın
  • Təmiz bir sistem quraşdırın və lazımi parametrləri edin
  • Diskin şəklini çəkin
  • AMI-ni qeydiyyatdan keçirin

Ətraf Mühitin Hazırlanması

Bizim məqsədlərimiz üçün istənilən formanın istənilən nümunəsi, hətta t1.micro da uyğun gəlir. Siz onu CLI vasitəsilə işlədə bilərsiniz:

aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro

Gəlin sistemimizi daha sonra quraşdıracağımız ebs-həcmi yaradaq:

aws ec2 create-volume --availability-zone us-east-1a --size 10

Bu əmr bizim üçün 10 Gb disk edəcək. Vacibdir: disk nümunə ilə eyni zonada olmalıdır (bizim vəziyyətimizdə bu us-şərq-1a).
Sonra, diski nümunəyə əlavə etməlisiniz:

aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf

İndi ssh vasitəsilə nümunəyə daxil olaq, diski formatlaşdıraq və kataloqa quraşdıraq:

mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$

Təmiz Centos 5.9 quraşdırılması

Sistemi quraşdırmadan əvvəl qovluq ağacı yaratmalı, proc və sysfs-i quraşdırmalı və minimum cihazlar dəstini yaratmalısınız:

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 və aşağıdakı konfiqurasiya faylından istifadə edərək sistemi quraşdıracağıq:
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

Quraşdırma prosesini tamamladıqdan sonra istənilən lazımi paketləri eyni şəkildə quraşdıra bilərsiniz:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name

fstab-ı redaktə edək:

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 hələ də xen dəstəyi ilə bir ləpə quraşdırmalısınız:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen

Grub quraşdırın:

chroot /mnt/centos-image/ grub-install /dev/xvdf

və yeni bir initrd yaradın:

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

Bütün bu parametrləri və yeni fstab-ı təyin etmək çox vacibdir, əks halda sistem açılmayacaq.
Sonra grub üçün menu.lst faylı yaratmalısınız:

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

Şəbəkəni və sshd-ni konfiqurasiya edək:

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

Beləliklə, işləyən şəbəkə və düymələrdən istifadə edərək instansiyaya daxil olmaq imkanı əldə edəcəyik. Ancaq açarın özü bir şəkildə instansiyaya köçürülməlidir. Bu, açarı götürəcək və onu nümunədə saxlayacaq bir skriptdən istifadə etməklə edilə bilər:

vi /mnt/centos5img/etc/init.d/ec2-get-ssh

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# proses adı: ec2-get-ssh
# təsviri: EC2 istifadəçisi üçün AWS açıq açar etimadnaməsini alın

#Mənbə funksiyası kitabxanası
. /etc/rc.d/init.d/functions

# Mənbə şəbəkə konfiqurasiyası
[ -r /etc/sysconfig/şəbəkə ] &&. /etc/sysconfig/şəbəkə

# Sisteminiz üçün aşağıdakı mühit dəyişənlərini dəyişdirin
ixrac PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Şəbəkənin konfiqurasiya olunduğunu yoxlayın
əgər [ "${NETWORKING}" = "yox" ]; sonra
echo "Şəbəkə konfiqurasiya edilməyib."
çıxış 1
fi

başlamaq () {
əgər [! -d /root/.ssh ]; sonra
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP istifadə edərək metadata serverindən ictimai açarı əldə edin
qıvrım -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
əgər [$? -ekv 0 ]; sonra
echo "EC2: HTTP istifadə edərək metadata serverindən ictimai açarı əldə edin."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

stop() {
echo "Burada heç bir iş yoxdur"
}

yenidən başlamaq() {
dayandırmaq
Başlamaq
}

# Gör bizi necə çağırdılar.
halda "$1" in
başlamaq)
Başlamaq
;;
dayan)
dayandırmaq
;;
yenidən başlamaq)
yenidən başladın
;;
*)
echo $"İstifadə: $0 {start|dayandır|yenidən başladın}"
çıxış 1
bu C

$ çıxış?
Onu icra edilə bilən hala gətirək və başlanğıca əlavə edək:

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-u söndürmək və ya onu düzgün konfiqurasiya etmək də məsləhətdir. Əks halda, məsələn, açar nümunədə yadda saxlanılmaya bilər.
Bu anda sistemin qurulmasını dayandıra bilərsiniz. Artıq buludda işləməyə hazır təmiz CentOS var. Ebs diskini sistemimizlə ayırmaq və ami qeydiyyatdan keçirmək qalır.

umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/

AMI qeydiyyatı

Bir ebs diskindən ami əldə etmək üçün əvvəlcə diskin şəklini çəkməlisiniz:

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

Ami-ni qeydiyyatdan keçirməyin ən asan yolu AWS İdarəetmə Konsolundan keçir. Bunu etmək üçün sadəcə EC2 xidmətində "Snapshots" bölməsinə keçməlisiniz, sizə lazım olanı seçin (bizim vəziyyətimizdə bu, centos-snapdır), üzərinə sağ klikləyin və "Snapshot-dan şəkil yaradın" seçin.
Sonra açılan pəncərədə təxminən aşağıdakı parametrləri seçməlisiniz:

Amazon buludunda təmiz CentOS 5.9 ilə öz imicinizi yaratmaq

Hansı Kernel ID-ni seçəcəyinizi bu şəkildə öyrənə bilərsiniz:

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

Hamısı budur. İndi nümunələri işə sala bilərsiniz.
Bu şəkildə, çox güman ki, hər hansı bir Linux paylanması ilə bir şəkil yarada bilərsiniz. Ən azı, mütləq Debian (təmiz sistem qurmaq üçün debotstrap istifadə edərək) və Rhel ailəsi.

Mənbə: www.habr.com

Добавить комментарий