Paghimo sa imong kaugalingon nga imahe nga adunay puro nga CentOS 5.9 sa panganod sa Amazon

Sama sa imong nahibal-an, sa Amazon cloud virtual nga mga higayon gilunsad base sa mga imahe (ang gitawag nga AMI). Naghatag ang Amazon og daghang gidaghanon niini; mahimo usab nimo gamiton ang publiko nga mga imahe nga giandam sa mga ikatulo nga partido, diin ang cloud provider, siyempre, wala’y responsibilidad. Apan usahay kinahanglan nimo ang usa ka limpyo nga imahe sa sistema nga adunay kinahanglan nga mga parameter, nga wala sa lista sa mga imahe. Unya ang bugtong paagi mao ang paghimo sa imong kaugalingon nga AMI.

Ang opisyal nga dokumentasyon naghulagway paagi paghimo og "instance store-backed AMI". Ang disbentaha niini nga pamaagi mao nga ang nahuman nga imahe kinahanglan usab nga mabag-o ngadto sa usa ka "EBS-backed AMI"

Giunsa paghimo ang imong kaugalingon nga AMI nga gipaluyohan sa EBS sa panganod sa Amazon nga wala’y mga intermediate nga lakang hisgutan sa kini nga artikulo.

Planong Aksyon:

  • Andama ang palibot
  • Pag-instalar og limpyo nga sistema ug paghimo sa gikinahanglan nga mga setting
  • Pagkuha og snapshot sa disk
  • Pagrehistro sa AMI

Pag-andam sa Kalikopan

Alang sa among katuyoan, ang bisan unsang pananglitan sa bisan unsang porma angay, bisan ang t1.micro. Mahimo nimong ipadagan kini pinaagi sa CLI:

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

Maghimo kita og ebs-volume, diin atong i-install ang atong sistema sa ulahi:

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

Kini nga mando maghimo usa ka 10 Gb disk alang kanamo. Importante: ang disk kinahanglang anaa sa samang sona sama sa pananglitan (sa among kaso kini us-east-1a).
Sunod, kinahanglan nimo nga ilakip ang disk sa pananglitan:

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

Karon mag-log in kita sa pananglitan pinaagi sa ssh, i-format ang disk ug i-mount kini sa direktoryo:

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

Pag-instalar sa limpyo nga Centos 5.9

Sa dili pa i-install ang sistema, kinahanglan nimo nga maghimo usa ka punoan sa direktoryo, i-mount ang proc ug sysfs, ug maghimo usa ka minimum nga set sa mga aparato:

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

Atong i-install ang sistema gamit ang yum ug ang mosunod nga configuration file:
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

Human makompleto ang proseso sa pag-instalar, mahimo nimong i-install ang bisan unsang kinahanglan nga mga pakete sa parehas nga paagi:

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

Atong usbon ang 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

Sa CentOS 5.9 kinahanglan nimo nga mag-install usa ka kernel nga adunay suporta sa xen:

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

I-install ang Grub:

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

ug paghimo og bag-ong 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

Importante kaayo nga ipiho kining tanan nga mga parameter ug usa ka bag-ong fstab, kung dili ang sistema dili mag-boot.
Sunod kinahanglan nimo nga maghimo usa ka menu.lst file alang sa 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

Atong i-configure ang network ug 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

Sa ingon, makakuha kami usa ka nagtrabaho nga network ug ang abilidad sa pag-log in sa pananglitan gamit ang mga yawe. Apan ang yawe mismo kinahanglan nga ibalhin sa pananglitan sa bisan unsang paagi. Mahimo kini gamit ang usa ka script nga magkuha sa yawe ug i-save kini sa pananglitan:

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

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# ngalan sa proseso: ec2-get-ssh
# paghulagway: Pagkuha sa AWS publiko nga yawe nga mga kredensyal alang sa EC2 nga tiggamit

#Source function library
. /etc/rc.d/init.d/functions

# Pag-configure sa gigikanan sa network
[-r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Ilisan ang mosunod nga mga variable sa palibot alang sa imong sistema
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Susiha nga ang networking na-configure
kung [ "${NETWORKING}" = "dili"]; unya
echo "Ang networking wala ma-configure."
paggawas 1
fi

pagsugod () {
kung [! -d /root/.ssh ]; unya
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Kuhaa ang publiko nga yawe gikan sa metadata server gamit ang HTTP
kulot -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
kung [$? -eq 0]; unya
echo "EC2: Kuhaa ang publiko nga yawe gikan sa metadata server gamit ang HTTP."
iring /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

hunong() {
echo "Walay buhaton dinhi"
}

pagsugod usab () {
paghunong
pagsugod
}

# Tan-awa kung giunsa kami gitawag.
kaso nga "$1" sa
pagsugod)
pagsugod
;;
hunong)
paghunong
;;
pagsugod usab)
Pagsugod pag-usab
;;
*)
echo $"Paggamit: $0 {start|stop|restart}"
paggawas 1
nga C

paggawas $?
Himoon nato kini nga executable ug idugang kini sa pagsugod:

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

Gisugyot usab nga i-disable ang Selinux, o i-configure kini sa husto. Kung dili, pananglitan, ang yawe mahimong dili ma-save sa pananglitan.
Niini nga punto mahimo nimong hunongon ang pag-set up sa sistema. Naa na mi lunsay nga CentOS nga andam modagan sa panganod. Ang nahabilin mao ang pag-unmount sa ebs disk sa among sistema ug pagrehistro sa ami.

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

Pagparehistro sa AMI

Aron makuha ang ami gikan sa usa ka ebs disk, kinahanglan una nimong kuhaon ang usa ka snapshot sa disk:

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

Ang pinakasayon ​​nga paagi sa pagparehistro ami mao ang pinaagi sa AWS Management Console. Aron mahimo kini, kinahanglan ka lang nga moadto sa seksyon nga "Mga Snapshot" sa serbisyo sa EC2, pilia ang usa nga kinahanglan nimo (sa among kaso kini centos-snap), pag-right-click niini ug pilia ang "Paghimo og Imahe gikan sa Snapshot"
Pagkahuman, sa bintana nga nagbukas, kinahanglan nimo nga pilion ang gibana-bana nga mga mosunud nga mga parameter:

Paghimo sa imong kaugalingon nga imahe nga adunay puro nga CentOS 5.9 sa panganod sa Amazon

Mahimo nimong mahibal-an kung unsang Kernel ID ang pilion sama sa mosunod:

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

Mao ra. Karon mahimo nimong ilunsad ang mga higayon.
Niining paagiha, makahimo ka og usa ka imahe, lagmit, sa bisan unsang pag-apod-apod sa Linux. Labing menos, siguradong Debian (gamit ang debootstrap aron ma-install ang usa ka limpyo nga sistema) ug Rhel-pamilya.

Source: www.habr.com

Idugang sa usa ka comment