Oma pildi loomine puhta CentOS 5.9 abil Amazoni pilves

Nagu teate, käivitatakse Amazoni pilves virtuaalsed eksemplarid piltide põhjal (nn AMI). Amazon pakub neid suurel hulgal, kasutada saab ka kolmandate osapoolte koostatud avalikke pilte, mille eest pilvepakkuja loomulikult mingit vastutust ei kanna. Kuid mõnikord on vaja puhast süsteemipilti koos vajalike parameetritega, mida piltide loendis pole. Siis on ainus väljapääs teha oma AMI.

Ametlik dokumentatsioon kirjeldab viis eksemplaripoe toetatud AMI loomine. Selle lähenemisviisi puuduseks on see, et valmis pilt tuleb teisendada ka EBS-i toetatud AMI-ks.

Selles artiklis käsitletakse seda, kuidas luua oma EBS-i toetatud AMI Amazoni pilves ilma vahepealsete sammudeta.

Tegevuskava:

  • Valmistage keskkond ette
  • Installige puhas süsteem ja tehke vajalikud seadistused
  • Tehke kettalt hetktõmmis
  • Registreerige AMI

Keskkonna ettevalmistamine

Meie jaoks sobib iga kujuga eksemplar, isegi t1.micro. Saate seda käivitada CLI kaudu:

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

Loome ebs-volume, kuhu hiljem oma süsteemi paigaldame:

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

See käsk teeb meile 10 Gb ketta. Tähtis: ketas peab asuma eksemplariga samas tsoonis (meie puhul on see us-ida-1a).
Järgmisena peate ketta eksemplari külge ühendama:

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

Logime nüüd ssh-i kaudu eksemplari sisse, vormindame ketta ja ühendame selle kataloogi:

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

Puhta Centos 5.9 installimine

Enne süsteemi installimist peate looma kataloogipuu, ühendama proc ja sysf-id ning looma minimaalse seadmete komplekti:

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

Installime süsteemi yumi ja järgmise konfiguratsioonifaili abil:
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

Pärast installiprotsessi lõpetamist saate kõik vajalikud paketid installida samal viisil:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name

Redigeerime fstab-i:

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-s peate ikkagi installima xeni toega kerneli:

yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen

Installige Grub:

chroot /mnt/centos-image/ grub-install /dev/xvdf

ja genereerige uus 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

On väga oluline määrata kõik need parameetrid ja uus fstab, muidu süsteem ei käivitu.
Järgmiseks peate looma grubi jaoks faili 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

Seadistame võrgu ja 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

Nii saame toimiva võrgu ja võimaluse klahvide abil eksemplari sisse logida. Aga võti ise tuleb kuidagi eksemplari üle kanda. Seda saab teha skripti abil, mis võtab võtme ja salvestab selle eksemplari:

vi /mnt/centos5img/etc/init.d/ec2-get-ssh

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# protsessinimi: ec2-get-ssh
# kirjeldus: jäädvustage AWS-i avaliku võtme mandaadid EC2 kasutaja jaoks

#Allikate funktsioonide teek
. /etc/rc.d/init.d/functions

# Lähtevõrgu konfiguratsioon
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Asendage oma süsteemi jaoks järgmised keskkonnamuutujad
eksport PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Kontrollige, kas võrguühendus on konfigureeritud
if [ "${NETWORKING}" = "ei" ]; siis
echo "Võrk ei ole konfigureeritud."
väljumine 1
fi

algus () {
kui [! -d /root/.ssh ]; siis
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Hangi avalik võti metaandmete serverist HTTP abil
curl -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/minu-avalik-võti
kui [$? -ekv 0]; siis
echo "EC2: tooge avalik võti metaandmete serverist HTTP abil."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/minu-avalik-võti
fi
}

stop() {
kaja "Siin pole midagi teha"
}

Taaskäivita() {
peatus
algus
}

# Vaata, kuidas meid kutsuti.
ümbris "$1" in
algus)
algus
;;
peatus)
peatus
;;
restart)
restart
;;
*)
echo $"Kasutus: $0 {start|stop|restart}"
väljumine 1
et C

väljuda $?
Teeme selle käivitatavaks ja lisame käivitamisse:

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

Samuti on soovitatav Selinux keelata või õigesti konfigureerida. Vastasel juhul ei pruugita võtit näiteks eksemplarile salvestada.
Sel hetkel saate süsteemi seadistamise lõpetada. Meil on juba puhas CentOS pilves töötamiseks valmis. Jääb vaid ebsi ketas meie süsteemiga lahti ühendada ja ami registreerida.

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

AMI registreerimine

Ami ebsi kettalt hankimiseks peate esmalt tegema kettalt hetktõmmise:

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

Lihtsaim viis ami registreerimiseks on AWS-i halduskonsooli kaudu. Selleks peate lihtsalt minema teenuses EC2 jaotisse "Snapshots", valima vajaliku (meie puhul on see centos-snap), paremklõpsake sellel ja valige "Loo pilt hetktõmmisest".
Seejärel peate avanevas aknas valima ligikaudu järgmised parameetrid:

Oma pildi loomine puhta CentOS 5.9 abil Amazoni pilves

Saate teada, millist kerneli ID-d valida, toimides järgmiselt.

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

See on kõik. Nüüd saate eksemplare käivitada.
Sel viisil saate luua pildi suure tõenäosusega mis tahes Linuxi distributsiooniga. Vähemalt kindlasti Debian (kasutades debootstrapi puhta süsteemi installimiseks) ja Rhel-perekond.

Allikas: www.habr.com

Lisa kommentaar