మీకు తెలిసినట్లుగా, అమెజాన్ క్లౌడ్లో వర్చువల్ సందర్భాలు చిత్రాల ఆధారంగా ప్రారంభించబడతాయి (అని పిలవబడేవి
అధికారిక డాక్యుమెంటేషన్ వివరిస్తుంది
ఇంటర్మీడియట్ దశలు లేకుండా అమెజాన్ క్లౌడ్లో మీ స్వంత EBS-మద్దతు గల AMIని ఎలా సృష్టించాలో ఈ కథనంలో చర్చించబడుతుంది.
కార్య ప్రణాళిక:
- పర్యావరణాన్ని సిద్ధం చేయండి
- క్లీన్ సిస్టమ్ను ఇన్స్టాల్ చేయండి మరియు అవసరమైన సెట్టింగ్లను చేయండి
- డిస్క్ యొక్క స్నాప్షాట్ తీసుకోండి
- 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 Gb డిస్క్ని చేస్తుంది. ముఖ్యమైనది: డిస్క్ తప్పనిసరిగా అదే జోన్లో ఉండాలి (మా విషయంలో ఇది us-east-1a).
తరువాత, మీరు డిస్క్ను ఉదాహరణకి అటాచ్ చేయాలి:
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 !$
క్లీన్ సెంటోస్ని ఇన్స్టాల్ చేస్తోంది 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
గ్రబ్ని ఇన్స్టాల్ చేయండి:
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ని పేర్కొనడం చాలా ముఖ్యం, లేకుంటే సిస్టమ్ బూట్ చేయబడదు.
తర్వాత మీరు grub కోసం menu.lst ఫైల్ని సృష్టించాలి:
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
# వివరణ: EC2 వినియోగదారు కోసం AWS పబ్లిక్ కీ ఆధారాలను క్యాప్చర్ చేయండి
#మూల ఫంక్షన్ లైబ్రరీ
. /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}" = "no" ]; అప్పుడు
ప్రతిధ్వని "నెట్వర్కింగ్ కాన్ఫిగర్ చేయబడలేదు."
నిష్క్రమణ 1
fi
ప్రారంభం () {
అయితే [! -d /root/.ssh ]; అప్పుడు
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTPని ఉపయోగించి మెటాడేటా సర్వర్ నుండి పబ్లిక్ కీని తిరిగి పొందండి
కర్ల్ -ఎఫ్
అయితే [$? -eq 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
}
ఆపు() {
ప్రతిధ్వని "ఇక్కడ చేయడానికి ఏమీ లేదు"
}
పునఃప్రారంభించు() {
ఆపడానికి
ప్రారంభం
}
# మమ్మల్ని ఎలా పిలిచారో చూడండి.
కేసు "$1" లో
ప్రారంభం)
ప్రారంభం
;;
ఆపండి)
ఆపడానికి
;;
పునఃప్రారంభించు)
పునఃప్రారంభమైన
;;
*)
ప్రతిధ్వని $"వినియోగం: $0 {ప్రారంభం|స్టాప్|పునఃప్రారంభించు}"
నిష్క్రమణ 1
ఆ సి
నిష్క్రమించు $?
దీన్ని ఎక్జిక్యూటబుల్ చేసి స్టార్టప్కి జోడిద్దాం:
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 డిస్క్ను అన్మౌంట్ చేయడం మరియు amiని నమోదు చేయడం మాత్రమే మిగిలి ఉంది.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
AMI నమోదు
ebs డిస్క్ నుండి amiని పొందడానికి, మీరు ముందుగా డిస్క్ యొక్క స్నాప్షాట్ను తీసుకోవాలి:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
AWS మేనేజ్మెంట్ కన్సోల్ ద్వారా అమీని నమోదు చేయడానికి సులభమైన మార్గం. దీన్ని చేయడానికి, మీరు EC2 సేవలోని “స్నాప్షాట్లు” విభాగానికి వెళ్లి, మీకు అవసరమైనదాన్ని ఎంచుకోండి (మా విషయంలో ఇది సెంటోస్-స్నాప్), దానిపై కుడి-క్లిక్ చేసి, “స్నాప్షాట్ నుండి చిత్రాన్ని సృష్టించు” ఎంచుకోండి.
అప్పుడు, తెరుచుకునే విండోలో, మీరు ఈ క్రింది పారామితులను సుమారుగా ఎంచుకోవాలి:
మీరు ఏ కెర్నల్ 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 పంపిణీతో ఒక చిత్రాన్ని సృష్టించవచ్చు. కనీసం, ఖచ్చితంగా డెబియన్ (క్లీన్ సిస్టమ్ను ఇన్స్టాల్ చేయడానికి డీబూట్స్ట్రాప్ని ఉపయోగించడం) మరియు Rhel-ఫ్యామిలీ.
మూలం: www.habr.com