Kama unavyojua, katika wingu la Amazon matukio ya kawaida yanazinduliwa kulingana na picha (kinachojulikana
Nyaraka rasmi zinaelezea
Jinsi ya kuunda AMI yako mwenyewe inayoungwa mkono na EBS kwenye wingu la Amazon bila hatua za kati itajadiliwa katika nakala hii.
Mpango wa utekelezaji:
- Tayarisha mazingira
- Sakinisha mfumo safi na ufanye mipangilio muhimu
- Chukua picha ya diski
- Sajili AMI
Kuandaa Mazingira
Kwa madhumuni yetu, mfano wowote wa sura yoyote inafaa, hata t1.micro. Unaweza kuiendesha kupitia CLI:
aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro
Wacha tuunde ebs-volume, ambapo tutasakinisha mfumo wetu baadaye:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Amri hii itatutengenezea diski ya Gb 10. Muhimu: diski lazima iwe katika ukanda sawa na mfano (kwa upande wetu ni us-mashariki-1a).
Ifuatayo, unahitaji kushikamana na diski kwa mfano:
aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf
Sasa wacha tuingie kwenye mfano kupitia ssh, fomati diski na kuiweka kwenye saraka:
mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$
Kufunga Centos safi 5.9
Kabla ya kusanidi mfumo, unahitaji kuunda mti wa saraka, weka proc na sysfs, na uunda seti ya chini ya vifaa:
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
Tutasanikisha mfumo kwa kutumia yum na faili ifuatayo ya usanidi:
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
Baada ya kukamilisha mchakato wa ufungaji, unaweza kufunga vifurushi vyovyote muhimu kwa njia ile ile:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name
Wacha tuhariri 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
Katika CentOS 5.9 bado unahitaji kusanikisha kernel na usaidizi wa xen:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Sakinisha Grub:
chroot /mnt/centos-image/ grub-install /dev/xvdf
na toa initrd mpya:
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
Ni muhimu sana kutaja vigezo hivi vyote na fstab mpya, vinginevyo mfumo hauwezi boot.
Ifuatayo unahitaji kuunda faili ya menu.lst kwa 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
Wacha tusanidi mtandao na 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
Kwa hivyo, tutapata mtandao wa kufanya kazi na uwezo wa kuingia kwenye mfano kwa kutumia funguo. Lakini ufunguo yenyewe unahitaji kuhamishiwa kwa mfano kwa namna fulani. Hii inaweza kufanywa kwa kutumia hati ambayo itachukua ufunguo na kuihifadhi kwa mfano:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-pata-ssh#! / bin / bash
# chkconfig: 2345 95 20
# jina la mchakato: ec2-get-ssh
# maelezo: Nasa vitambulisho vya ufunguo wa umma wa AWS kwa mtumiaji wa EC2
#Maktaba ya kazi ya Chanzo
. /etc/rc.d/init.d/functions
# Usanidi wa mtandao wa chanzo
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network
# Badilisha nafasi zifuatazo za mazingira kwa mfumo wako
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# Angalia kuwa mtandao umesanidiwa
ikiwa [ "${NETWORKING}" = "no" ]; basi
echo "Mtandao haujasanidiwa."
toka 1
fi
anza () {
kama [! -d /mzizi/.ssh ]; basi
mkdir -p /mzizi/.ssh
chmod 700 /root/.ssh
fi
# Pata ufunguo wa umma kutoka kwa seva ya metadata kwa kutumia HTTP
pinda -f
ikiwa [$? -eq 0 ]; basi
echo "EC2: Rejesha ufunguo wa umma kutoka kwa seva ya metadata kwa kutumia HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}
stop() {
echo "Hakuna cha kufanya hapa"
}
Anzisha tena() {
kuacha
Kuanza
}
# Tazama jinsi tulivyoitwa.
kesi "$1" ndani
anza)
Kuanza
;;
simama)
kuacha
;;
Anzisha tena)
fungua tena
;;
*)
echo $"Matumizi: $0 {start|stop|anzisha upya}"
toka 1
kwamba C
toka $?
Wacha tuifanye itekelezwe na tuiongeze kwa kuanza:
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
Inashauriwa pia kuzima Selinux, au kusanidi kwa usahihi. Vinginevyo, kwa mfano, ufunguo hauwezi kuhifadhiwa kwenye mfano.
Kwa wakati huu unaweza kuacha kuanzisha mfumo. Tayari tunayo CentOS safi tayari kufanya kazi kwenye wingu. Kilichobaki ni kuteremsha diski ya ebs na mfumo wetu na kusajili ami.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
Usajili wa AMI
Ili kupata ami kutoka kwa diski ya ebs, kwanza unahitaji kuchukua picha ya diski:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Njia rahisi zaidi ya kusajili ami ni kupitia Dashibodi ya Usimamizi ya AWS. Ili kufanya hivyo, unahitaji tu kwenda kwenye sehemu ya "Snapshots" katika huduma ya EC2, chagua unayohitaji (kwa upande wetu ni centos-snap), bonyeza-click juu yake na uchague "Unda Picha kutoka kwa Snapshot"
Kisha, katika dirisha linalofungua, unahitaji kuchagua takriban vigezo vifuatavyo:
Unaweza kujua ni kitambulisho gani cha Kernel cha kuchagua kama ifuatavyo:
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
Ni hayo tu. Sasa unaweza kuzindua matukio.
Kwa njia hii, unaweza kuunda picha, uwezekano mkubwa, na usambazaji wowote wa Linux. Angalau, kwa hakika Debian (kwa kutumia debootstrap kusakinisha mfumo safi) na Rhel-family.
Chanzo: mapenzi.com