Како што знаете, во облакот на Амазон се лансираат виртуелни примероци врз основа на слики (т.н
Официјалната документација опишува
Како да креирате сопствена 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
ако [$? -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), кликнете со десното копче на неа и изберете „Креирај слика од слика“
Потоа, во прозорецот што се отвора, треба да ги изберете приближно следните параметри:
Можете да дознаете кој 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