Ukudala isithombe sakho nge-CentOS 5.9 ehlanzekile efwini le-Amazon

Njengoba wazi, kumafu we-Amazon izehlakalo ezibonakalayo zethulwa ngokusekelwe ezithombeni (okuthiwa AMI). I-Amazon ihlinzeka ngenani elikhulu lazo; ungasebenzisa futhi izithombe zomphakathi ezilungiselelwe abantu besithathu, lapho umhlinzeki wamafu, vele, akanawo umthwalo wemfanelo. Kodwa ngezinye izikhathi udinga isithombe sesistimu esihlanzekile nemingcele edingekayo, engekho ohlwini lwezithombe. Bese okuwukuphela kwendlela yokuphuma ukwenza eyakho i-AMI.

Imibhalo esemthethweni iyachaza indlela ukudala "i-AMI esekelwe esitolo sesithombe". Ububi bale ndlela ukuthi isithombe esiqediwe sizodinga futhi ukuguqulwa sibe "i-EBS-backed AMI"

Ungayakha kanjani eyakho i-EBS-backed AMI efwini lase-Amazon ngaphandle kwezinyathelo eziphakathi kuzoxoxwa ngakho kulesi sihloko.

Uhlelo lokusebenza:

  • Lungisa imvelo
  • Faka isistimu ehlanzekile futhi wenze izilungiselelo ezidingekayo
  • Thatha isifinyezo sediski
  • Bhalisa i-AMI

Ukulungisa Imvelo

Ngezinjongo zethu, noma yisiphi isibonelo sanoma yimuphi umumo sifanelekile, ngisho ne-t1.micro. Ungayisebenzisa nge-CLI:

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

Masidale i-ebs-volume, lapho sizofaka khona isistimu yethu kamuva:

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

Lo myalo uzosenzela idiski engu-10 Gb. Okubalulekile: idiski kufanele ibe endaweni efanayo nesibonelo (kithi ithi-empumalanga-1a).
Okulandelayo, udinga ukunamathisela idiski kusibonelo:

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

Manje ake singene esibonelweni nge-ssh, fometha idiski futhi uyibeke kumkhombandlela:

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

Ukufaka ama-Centos ahlanzekile 5.9

Ngaphambi kokufaka uhlelo, udinga ukudala isihlahla somkhombandlela, faka i-proc nama-sysfs, futhi udale isethi encane yamadivayisi:

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

Sizofaka isistimu sisebenzisa i-yum kanye nefayela lokumisa elilandelayo:
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

Ngemva kokuqeda inqubo yokufaka, ungafaka noma yimaphi amaphakheji adingekayo ngendlela efanayo:

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

Masihlele i-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

Ku-CentOS 5.9 usadinga ukufaka i-kernel ngokusekelwa kwe-xen:

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

Faka i-Grub:

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

bese udala i-initrd entsha:

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

Kubaluleke kakhulu ukucacisa yonke le mingcele kanye ne-fstab entsha, ngaphandle kwalokho uhlelo ngeke luqale.
Okulandelayo udinga ukudala ifayela le-menu.lst le-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

Ake silungiselele inethiwekhi kanye ne-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

Ngakho, sizothola inethiwekhi esebenzayo kanye nekhono lokungena esibonelweni sisebenzisa okhiye. Kodwa ukhiye ngokwawo udinga ukudluliselwa esibonelweni ngandlela thile. Lokhu kungenziwa kusetshenziswa iskripthi esizothatha ukhiye futhi siwugcine kusibonelo:

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

ec2-thola-ssh#! / bin / bash
# chkconfig: 2345 95 20
# igama lenqubo: ec2-get-ssh
# incazelo: Shutha imininingwane yokhiye wasesidlangalaleni we-AWS yomsebenzisi we-EC2

#Umthombo womsebenzi wezincwadi
. /etc/rc.d/init.d/functions

# Ukucushwa komthombo wenethiwekhi
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Faka esikhundleni sokuguquguquka kwemvelo okulandelayo ohlelweni lwakho
thekelisa INDLELA=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Hlola ukuthi inethiwekhi imisiwe
uma [ "${NETWORKING}" = "cha" ]; bese
echo "Inethiwekhi ayilungiselelwe."
phuma 1
fi

qala () {
uma [! -d /impande/.ssh ]; bese
mkdir -p /root/.ssh
I-chmod 700 /root/.ssh
fi
# Buyisa ukhiye womphakathi kuseva yemethadatha usebenzisa i-HTTP
curl -f 169.254.169.254/yakamuva/meta-data/public-keys/0/opensh-key > /tmp/my-public-key
uma [$? -eq 0 ]; bese
echo "EC2: Buyisa ukhiye womphakathi kuseva yemethadatha usebenzisa i-HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

Ima() {
echo "Akukho ongakwenza lapha"
}

qala kabusha() {
Ima
isiqalo
}

# Bheka ukuthi sibizwe kanjani.
icala "$1" phakathi
qala)
isiqalo
;;
Ima)
Ima
;;
qala kabusha)
Qala kabusha
;;
*)
echo $"Ukusetshenziswa: $0 {start|stop|qala kabusha}"
phuma 1
ukuthi uC

phuma $?
Masiyenze isebenziseke futhi siyingeze ekuqaleni:

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

Kuyatuseka futhi ukukhubaza i-Selinux, noma ukuyimisa ngendlela efanele. Uma kungenjalo, ngokwesibonelo, ukhiye ungase ungalondolozwa lapho.
Kuleli qophelo ungayeka ukusetha isistimu. Sesivele sine-CentOS ehlanzekile elungele ukusebenza efwini. Okusele nje ukwehlisa idiski ye-ebs ngesistimu yethu bese ubhalisa i-ami.

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

Ukubhaliswa kwe-AMI

Ukuze uthole i-ami kusuka kudiski ye-ebs, udinga kuqala ukuthatha isifinyezo sediski:

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

Indlela elula yokubhalisa i-ami ukusebenzisa Ikhonsoli Yokuphatha ye-AWS. Ukuze wenze lokhu, udinga nje ukuya engxenyeni ethi "Izifinyezo" kusevisi ye-EC2, khetha oyidingayo (kithi i-centos-snap), chofoza kwesokudla kuyo bese ukhetha "Dala isithombe kusuka ku-Snapshot"
Bese, ewindini elivulayo, udinga ukukhetha cishe amapharamitha alandelayo:

Ukudala isithombe sakho nge-CentOS 5.9 ehlanzekile efwini le-Amazon

Ungathola ukuthi iyiphi i-Kernel ID ongakhetha ngayo ngale ndlela elandelayo:

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

Yilokho kuphela. Manje ungakwazi ukuqalisa izimo.
Ngale ndlela, ungakha isithombe, cishe, nganoma yikuphi ukusatshalaliswa kweLinux. Okungenani, nakanjani i-Debian (usebenzisa i-debootstrap ukufaka isistimu ehlanzekile) kanye ne-Rhel-family.

Source: www.habr.com

Engeza amazwana