Stvaranje vlastite slike s čistim CentOS 5.9 u Amazonovom oblaku

Kao što znate, u Amazonovom oblaku virtualne instance pokreću se na temelju slika (tzv AMI). Amazon ih nudi velik broj, a možete koristiti i javne slike koje su pripremile treće strane, za što cloud provider, naravno, ne snosi nikakvu odgovornost. Ali ponekad vam je potrebna čista slika sustava s potrebnim parametrima, koja nije na popisu slika. Tada je jedini izlaz napraviti vlastiti AMI.

Službena dokumentacija opisuje postupak stvaranje "AMI-ja podržanog pohranom instance". Nedostatak ovog pristupa je da će se gotova slika također morati pretvoriti u "EBS-podržan AMI"

U ovom članku raspravljat ćemo o tome kako stvoriti vlastiti AMI podržan EBS-om u oblaku Amazon bez međukoraka.

Akcijski plan:

  • Pripremite okolinu
  • Instalirajte čisti sustav i napravite potrebne postavke
  • Napravite snimku diska
  • Registrirajte AMI

Priprema okoliša

Za naše potrebe prikladna je svaka instanca bilo kojeg oblika, čak i t1.micro. Možete ga pokrenuti putem CLI-ja:

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

Kreirajmo ebs-volumen, gdje ćemo kasnije instalirati naš sustav:

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

Ova naredba će nam napraviti disk od 10 Gb. Važno: disk mora biti u istoj zoni kao i instanca (u našem slučaju to je us-east-1a).
Zatim morate priložiti disk na instancu:

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

Sada se prijavimo na instancu putem ssh-a, formatiramo disk i postavimo ga u direktorij:

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

Instalacija čistog Centos 5.9

Prije instaliranja sustava potrebno je izraditi stablo direktorija, montirati proc i sysfs te stvoriti 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

Instalirat ćemo sustav koristeći yum i sljedeću konfiguracijsku datoteku:
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 dovršetka postupka 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 s 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

Vrlo je važno navesti sve te parametre i novi fstab, inače se sustav neće pokrenuti.
Zatim morate stvoriti datoteku menu.lst 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 prijave u instancu pomoću ključeva. Ali sam ključ treba nekako prenijeti na 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
# naziv procesa: ec2-get-ssh
# opis: Snimite AWS vjerodajnice javnog ključa za EC2 korisnika

#Biblioteka izvorne funkcije
. /etc/rc.d/init.d/functions

# Konfiguracija izvorne mreže
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Zamijenite sljedeće varijable okruženja za vaš sustav
izvoz PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Provjerite je li umrežavanje konfigurirano
if [ "${NETWORKING}" = "ne" ]; zatim
echo "Umrežavanje nije konfigurirano."
izlaz 1
fi

početak () {
ako [! -d /korijen/.ssh]; zatim
mkdir -p /korijen/.ssh
chmod 700 /root/.ssh
fi
# Dohvaćanje javnog ključa s poslužitelja metapodataka pomoću HTTP-a
kovrča -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/moj-javni-ključ
ako [$? -eq 0]; zatim
echo "EC2: Dohvati javni ključ s poslužitelja metapodataka pomoću HTTP-a."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/moj-javni-ključ
fi
}

stop() {
echo "Ovdje se nema što raditi"
}

restart() {
zaustaviti
početak
}

# Vidi kako su nas zvali.
slučaj "$ 1" u
početak)
početak
;;
Stop)
zaustaviti
;;
restart)
restart
;;
*)
echo $"Upotreba: $0 {start|stop|restart}"
izlaz 1
ESAC

izlaz $?
Učinimo 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. Inače, na primjer, ključ možda neće biti spremljen na instanci.
U ovom trenutku možete zaustaviti postavljanje sustava. Već imamo čisti CentOS spreman za rad u oblaku. Sve što preostaje je demontirati ebs disk s našim sustavom i registrirati ami.

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

AMI registracija

Da biste dobili ami s ebs diska, prvo trebate napraviti snimku diska:

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

Najlakši način za registraciju ami je putem AWS Management Console. Da biste to učinili, samo trebate otići na odjeljak "Snimke" u usluzi EC2, odabrati onu koja vam je potrebna (u našem slučaju to je centos-snap), desnom tipkom miša kliknite na nju i odaberite "Stvori sliku iz snimke"
Zatim u prozoru koji se otvori trebate odabrati približno sljedeće parametre:

Stvaranje vlastite slike s čistim CentOS 5.9 u Amazonovom oblaku

Na sljedeći način možete saznati koji ID kernela odabrati:

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 taj način možete stvoriti sliku, najvjerojatnije, s bilo kojom distribucijom Linuxa. Barem, definitivno Debian (koristeći debootstrap za instalaciju čistog sustava) i Rhel-obitelj.

Izvor: www.habr.com

Dodajte komentar