Amazon bulutunda saf CentOS 5.9 ile kendi imajınızı oluşturma

Bildiğiniz gibi Amazon bulutunda sanal örnekler görüntülere dayalı olarak başlatılır (sözde AMI). Amazon bunlardan çok sayıda sağlar; üçüncü taraflarca hazırlanan ve elbette bulut sağlayıcının herhangi bir sorumluluk taşımadığı genel görselleri de kullanabilirsiniz. Ancak bazen gerekli parametrelere sahip, görüntüler listesinde olmayan temiz bir sistem görüntüsüne ihtiyacınız vardır. O zaman tek çıkış yolu kendi AMI'nizi oluşturmaktır.

Resmi belgeler açıklamaktadır yol "örnek deposu destekli bir AMI" oluşturmak. Bu yaklaşımın dezavantajı, bitmiş görüntünün aynı zamanda "EBS destekli AMI"ya dönüştürülmesi gerekmesidir.

Bu makalede, ara adımlar olmadan Amazon bulutunda kendi EBS destekli AMI'nızı nasıl oluşturacağınız tartışılacaktır.

Eylem Planı

  • Ortamı hazırlayın
  • Temiz bir sistem kurun ve gerekli ayarları yapın
  • Diskin anlık görüntüsünü alın
  • AMI'yi kaydedin

Ortamın Hazırlanması

Bizim amaçlarımız açısından, herhangi bir şeklin herhangi bir örneği uygundur, hatta t1.micro bile. CLI aracılığıyla çalıştırabilirsiniz:

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

Daha sonra sistemimizi kuracağımız ebs-volume'u oluşturalım:

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

Bu komut bize 10 Gb'lik bir disk oluşturacaktır. Önemli: Disk, örnekle aynı bölgede olmalıdır (bizim durumumuzda us-east-1a'dır).
Daha sonra diski örneğe eklemeniz gerekir:

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

Şimdi ssh ile örneğe giriş yapalım, diski formatlayalım ve dizine bağlayalım:

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

Temiz Centos 5.9 kurulumu

Sistemi kurmadan önce bir dizin ağacı oluşturmanız, proc ve sysfs'yi bağlamanız ve minimum cihaz kümesi oluşturmanız gerekir:

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

Sistemi yum ve aşağıdaki yapılandırma dosyasını kullanarak kuracağız:
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

Kurulum işlemini tamamladıktan sonra gerekli paketleri aynı şekilde kurabilirsiniz:

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

Fstab'ı düzenleyelim:

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 hala xen destekli bir çekirdek yüklemeniz gerekiyor:

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

Grub'u yükleyin:

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

ve yeni bir initrd oluşturun:

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

Tüm bu parametrelerin ve yeni bir fstab'ın belirtilmesi çok önemlidir, aksi takdirde sistem önyükleme yapmayacaktır.
Daha sonra grub için bir menu.lst dosyası oluşturmanız gerekir:

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

Ağı ve sshd'yi yapılandıralım:

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

Böylece çalışan bir ağ ve anahtarları kullanarak örneğe giriş yapma olanağı elde edeceğiz. Ancak anahtarın kendisinin bir şekilde örneğe aktarılması gerekiyor. Bu, anahtarı alıp örneğe kaydedecek bir komut dosyası kullanılarak yapılabilir:

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

ec2-get-ssh#! / Bin / bash
#chkconfig: 2345 95 20
# işlem adı: ec2-get-ssh
# açıklama: EC2 kullanıcısı için AWS ortak anahtar kimlik bilgilerini yakalayın

#Kaynak işlev kitaplığı
. /etc/rc.d/init.d/işlevler

# Kaynak ağ yapılandırması
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Sisteminiz için aşağıdaki ortam değişkenlerini değiştirin
dışa aktarma YOLU=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Ağ bağlantısının yapılandırıldığını kontrol edin
if [ "${AĞ BAĞLANTISI}" = "hayır" ]; Daha sonra
echo "Ağ iletişimi yapılandırılmadı."
çıkış 1
fi

start () {
eğer [! -d /kök/.ssh ]; Daha sonra
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP kullanarak meta veri sunucusundan genel anahtarı alın
kıvrılma -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/genel-anahtarım
eğer [$? -eq 0 ]; Daha sonra
echo "EC2: HTTP kullanarak meta veri sunucusundan genel anahtarı alın."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/genel-anahtarım
fi
}

Dur() {
echo "Burada yapılacak bir şey yok"
}

tekrar başlat() {
durdurmak
başlama
}

# Bakın nasıl çağrıldık.
durumda "$ 1"
başlangıç)
başlama
;;
durdur)
durdurmak
;;
yeniden başlatın)
yeniden
;;
*)
echo $"Kullanım: $0 {başlat|durdur|yeniden başlat}"
çıkış 1
esac

çıkış $?
Çalıştırılabilir hale getirelim ve başlangıca ekleyelim:

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

Ayrıca Selinux'u devre dışı bırakmanız veya doğru şekilde yapılandırmanız da önerilir. Aksi halde örneğin anahtar örneğe kaydedilmeyebilir.
Bu noktada sistem kurulumunu durdurabilirsiniz. Bulutta çalışmaya hazır saf CentOS'umuz zaten var. Geriye kalan tek şey ebs diskinin sistemimizle olan bağlantısını kesmek ve ami'yi kaydetmek.

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

AMI kaydı

Bir ebs diskten ami almak için öncelikle diskin anlık görüntüsünü almanız gerekir:

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

Ami'yi kaydetmenin en kolay yolu AWS Management Console'u kullanmaktır. Bunu yapmak için, EC2 hizmetindeki "Anlık Görüntüler" bölümüne gitmeniz, ihtiyacınız olanı seçmeniz (bizim durumumuzda bu centos-snap), üzerine sağ tıklamanız ve "Anlık Görüntüden Görüntü Oluştur" u seçmeniz yeterli.
Ardından açılan pencerede yaklaşık olarak aşağıdaki parametreleri seçmeniz gerekir:

Amazon bulutunda saf CentOS 5.9 ile kendi imajınızı oluşturma

Hangi Çekirdek Kimliğini seçeceğinizi aşağıdaki şekilde öğrenebilirsiniz:

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

Bu kadar. Artık örnekleri başlatabilirsiniz.
Bu şekilde büyük olasılıkla herhangi bir Linux dağıtımıyla bir görüntü oluşturabilirsiniz. En azından kesinlikle Debian (temiz bir sistem kurmak için debootstrap kullanıyor) ve Rhel ailesi.

Kaynak: habr.com

Yorum ekle