Amazon бұлтында таза CentOS 5.9 көмегімен өз кескініңізді жасау

Өздеріңіз білетіндей, Amazon бұлтында виртуалды инстанциялар суреттер негізінде іске қосылады (деп аталатын AMI). Amazon олардың үлкен санын қамтамасыз етеді, сонымен қатар сіз үшінші тараптар дайындаған жалпыға қолжетімді суреттерді пайдалана аласыз, бұл үшін бұлтты провайдер, әрине, ешқандай жауапкершілік көтермейді. Бірақ кейде кескіндер тізімінде жоқ қажетті параметрлері бар таза жүйелік кескін қажет. Содан кейін жалғыз жол - өз AMI жасау.

Ресми құжаттамада сипатталған жол «дана қоймасы қолдайтын AMI» жасау. Бұл тәсілдің кемшілігі дайын кескінді «EBS қолдайтын AMI» түрлендіру қажет болады.

Аралық қадамдарсыз Amazon бұлтында 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 Гб диск жасайды. Маңызды: диск экземплярмен бір аймақта болуы керек (біздің жағдайда бұл біз-шығыс-1а).
Содан кейін дискіні данаға бекіту керек:

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 !$

Таза Centos 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

Grub орнату:

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

# Желі конфигурацияланғанын тексеріңіз
if [ "${NETWORKING}" = "жоқ" ]; содан кейін
echo "Желі конфигурацияланбаған."
1 шығу
fi

бастау () {
егер [! -d /root/.ssh ]; содан кейін
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# HTTP көмегімен метадеректер серверінен ашық кілтті шығарып алыңыз
curl -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
егер [ $? -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
}

Тоқта() {
echo «Бұл жерде ештеңе істеу керек емес»
}

қайтадан қосу() {
Тоқта
бастау
}

# Бізді қалай шақырғанын қараңыз.
"$1" корпусы
бастау)
бастау
;;
Тоқта)
Тоқта
;;
қайтадан қосу)
қайтадан қосу
;;
*)
echo $"Қолдану: $0 {бастау|тоқтату|қайта іске қосу}"
1 шығу
сол C

$ шығу?
Оны орындалатын етіп жасап, іске қосуға қосамыз:

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 дискісін ажыратып, амиді тіркеу ғана қалады.

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

Ami тіркеудің ең оңай жолы - AWS басқару консолі. Мұны істеу үшін сізге EC2 қызметіндегі «Snapshots» бөліміне өту керек, қажет біреуін таңдаңыз (біздің жағдайда бұл centos-snap), оны тінтуірдің оң жақ түймешігімен басып, «Суреттен сурет жасау» тармағын таңдаңыз.
Содан кейін ашылатын терезеде шамамен келесі параметрлерді таңдау керек:

Amazon бұлтында таза CentOS 5.9 көмегімен өз кескініңізді жасау

Қандай ядро ​​идентификаторын таңдау керектігін келесідей білуге ​​болады:

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 дистрибутивімен кескін жасай аласыз. Кем дегенде, міндетті түрде Debian (таза жүйені орнату үшін debbootstrap көмегімен) және Rhel-отбасы.

Ақпарат көзі: www.habr.com

пікір қалдыру