Kao što znate, u oblaku Amazon virtuelne instance se pokreću na osnovu slika (tzv
Zvanična dokumentacija opisuje
Kako da kreirate sopstveni AMI podržan od EBS-a u Amazon oblaku bez međukoraka, biće objašnjeno u ovom članku.
Akcioni plan:
- Pripremite okolinu
- Instalirajte čist sistem i izvršite potrebna podešavanja
- Napravite snimak diska
- Registrujte AMI
Priprema okoline
Za naše potrebe, svaki primjerak bilo kojeg oblika je prikladan, čak i t1.micro. Možete ga pokrenuti preko CLI:
aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro
Kreirajmo ebs-volume, gdje ćemo kasnije instalirati naš sistem:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Ova komanda će nam napraviti disk od 10 Gb. Važno: disk mora biti u istoj zoni kao instanca (u našem slučaju to je us-east-1a).
Zatim morate priključiti disk na instancu:
aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf
Sada se prijavite na instancu putem ssh-a, formatirajte disk i montirajte ga u direktorij:
mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$
Instaliranje čistog Centosa 5.9
Prije instaliranja sistema, potrebno je kreirati stablo direktorija, montirati proc i sysfs i kreirati minimalni skup uređaja:
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
Sistem ćemo instalirati koristeći yum i sljedeći konfiguracijski fajl:
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
Nakon završetka procesa instalacije, možete instalirati sve potrebne pakete na isti način:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name
Uredimo 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
U CentOS 5.9 i dalje morate instalirati kernel sa podrškom za xen:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Instalirajte Grub:
chroot /mnt/centos-image/ grub-install /dev/xvdf
i generirajte novi 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
Veoma je važno navesti sve ove parametre i novi fstab, inače se sistem neće pokrenuti.
Zatim morate kreirati menu.lst fajl za 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
Konfigurirajmo mrežu i 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
Tako ćemo dobiti radnu mrežu i mogućnost prijavljivanja u instancu pomoću ključeva. Ali sam ključ treba nekako prenijeti u instancu. To se može učiniti pomoću skripte koja će uzeti ključ i spremiti ga na instancu:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# ime procesa: ec2-get-ssh
# opis: Snimite akreditive AWS javnog ključa za EC2 korisnika
#Izvorna biblioteka funkcija
. /etc/rc.d/init.d/functions
# Izvorna mrežna konfiguracija
[ -r /etc/sysconfig/network] &&. /etc/sysconfig/network
# Zamijenite sljedeće varijable okruženja za vaš sistem
izvoz PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# Provjerite da li je umrežavanje konfigurirano
if [ "${NETWORKING}" = "ne" ]; onda
echo "Umrežavanje nije konfigurirano."
izlaz 1
fi
start () {
ako [! -d /root/.ssh ]; onda
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Preuzmi javni ključ sa servera metapodataka koristeći HTTP
curl -f
ako [$? -eq 0 ]; onda
echo "EC2: Preuzmi javni ključ sa servera metapodataka koristeći HTTP."
mačka /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/moj-javni-ključ
fi
}
stop() {
echo "Ovdje nema šta raditi"
}
restart() {
stani
start
}
# Vidite kako su nas zvali.
slučaj "$ 1" u
početak)
start
;;
stani)
stani
;;
ponovo pokreni)
Restart
;;
*)
echo $"Upotreba: $0 {start|stop|restart}"
izlaz 1
da je C
izlaz $?
Napravimo ga izvršnim i dodajmo ga u startup:
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
Također je preporučljivo onemogućiti Selinux ili ga ispravno konfigurirati. U suprotnom, na primjer, ključ možda neće biti sačuvan na instanci.
U ovom trenutku možete prekinuti postavljanje sistema. Već imamo čisti CentOS spreman za rad u oblaku. Sve što ostaje je da demontirate ebs disk sa našim sistemom i registrujete ami.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
AMI registracija
Da biste dobili ami sa ebs diska, prvo morate napraviti snimak diska:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Najlakši način da registrujete ami je preko AWS konzole za upravljanje. Da biste to učinili, samo trebate otići u odjeljak "Snapshots" u EC2 servisu, odabrati onaj koji vam je potreban (u našem slučaju to je centos-snap), kliknite desnim klikom na njega i odaberite "Create Image from Snapshot"
Zatim, u prozoru koji se otvori, morate odabrati otprilike sljedeće parametre:
Možete saznati koji ID kernela odabrati na sljedeći način:
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
To je sve. Sada možete pokrenuti instance.
Na ovaj način možete kreirati sliku, najvjerovatnije, sa bilo kojom Linux distribucijom. Barem, definitivno Debian (koristeći debootstrap za instaliranje čistog sistema) i Rhel-familija.
izvor: www.habr.com