Создавање сопствена слика со чист CentOS 5.9 во облакот на Амазон

Како што знаете, во облакот на Амазон се лансираат виртуелни примероци врз основа на слики (т.н АМИ). Амазон обезбедува голем број од нив, можете да користите и јавни слики подготвени од трети страни, за што давателот на облак, се разбира, не сноси никаква одговорност. Но, понекогаш ви треба чиста системска слика со потребните параметри, која ја нема во списокот со слики. Тогаш единствениот излез е да направите сопствена AMI.

Официјалната документација опишува начин создавање на „АМИ поддржана од продавница за пример“. Недостаток на овој пристап е што завршената слика исто така ќе треба да се претвори во „AMI поддржана од EBS“.

Како да креирате сопствена AMI поддржана од EBS во облакот на Амазон без посредни чекори ќе се дискутира во овој напис.

Акционен план:

  • Подгответе ја околината
  • Инсталирајте чист систем и направете ги потребните поставки
  • Направете слика од дискот
  • Регистрирајте 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. Важно: дискот мора да биде во истата зона како и примерот (во нашиот случај тоа е нас-исток-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, инаку системот нема да се подигне.
Следно, треба да креирате датотека menu.lst за 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

Ајде да ја конфигурираме мрежата и 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#! / корпа за отпадоци / баш
# chkconfig: 2345 95 20
# име на процес: ec2-get-ssh
# опис: Снимајте ги ингеренциите за јавниот клуч AWS за корисникот EC2

#Извор функционална библиотека
. /etc/rc.d/init.d/functions

# Изворна мрежна конфигурација
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/мрежа

# Заменете ги следните променливи на животната средина за вашиот систем
извоз ПАТ=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Проверете дали мрежата е конфигурирана
ако [ "${NETWORKING}" = "не" ]; тогаш
echo "Вмрежувањето не е конфигурирано."
излез 1
fi

почеток () {
ако [! -d /root/.ssh ]; тогаш
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Преземете јавен клуч од серверот за метаподатоци користејќи HTTP
навивам -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
ако [$? -eq 0]; тогаш
ехо „EC2: Поврати јавен клуч од серверот за метаподатоци користејќи HTTP“.
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

стоп () {
ехо „Тука нема што да се прави“
}

рестарт() {
запре
Почеток
}

# Погледнете како не викаа.
случај "$ 1" во
почеток)
Почеток
;;
запре)
запре
;;
рестарт)
рестартирајте
;;
*)
echo $"Употреба: $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, прво треба да направите слика од дискот:

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

Најлесен начин да се регистрирате ami е преку AWS Management Console. За да го направите ова, само треба да отидете во делот „Слики“ во услугата EC2, да го изберете оној што ви треба (во нашиот случај тоа е centos-snap), кликнете со десното копче на неа и изберете „Креирај слика од слика“
Потоа, во прозорецот што се отвора, треба да ги изберете приближно следните параметри:

Создавање сопствена слика со чист CentOS 5.9 во облакот на Амазон

Можете да дознаете кој 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. Барем, дефинитивно Debian (користејќи debootstrap за инсталирање чист систем) и Rhel-family.

Извор: www.habr.com

Додадете коментар