Vytvorte si svoj obrázok s čistým CentOS 5.9 v cloude Amazon

Ako viete, v cloude Amazon sa virtuálne inštancie spúšťajú na základe obrazov (tzv. AMI). Amazon ich poskytuje veľké množstvo a môžete použiť aj verejné obrazy pripravené tretími stranami, za ktoré poskytovateľ cloudu samozrejme nenesie žiadnu zodpovednosť. Niekedy však potrebujete čistý obraz systému s požadovanými parametrami, ktorý nie je zahrnutý v zozname obrazov. V takýchto prípadoch je jedinou možnosťou vytvoriť si vlastný AMI.

Oficiálna dokumentácia popisuje spôsob vytvorenie „AMI zálohovaného úložiskom inštancií“. Nevýhodou tohto prístupu je, že výsledný obraz bude potrebné previesť aj na „AMI zálohovaný EBS“.

Tento článok sa bude venovať tomu, ako si vytvoriť vlastné AMI s podporou EBS v cloude Amazon bez medzikrokov.

Akčný plán:

  • Pripravte si prostredie
  • Nainštalujte čistý systém a vykonajte potrebné nastavenia
  • Vytvorte snímku disku
  • Registrácia AMI

Príprava prostredia

Pre naše účely postačí ľubovoľná inštancia akéhokoľvek tvaru, dokonca aj t1.micro. Môžete ju spustiť cez CLI:

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

Vytvorme si zväzok ebs, kam neskôr nainštalujeme náš systém:

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

Tento príkaz nám vytvorí 10 GB disk. Dôležité: disk musí byť v rovnakej zóne ako inštancia (v našom prípade je to us-east-1a).
Ďalej je potrebné pripojiť disk k inštancii:

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

Teraz sa prihlásme do inštancie cez ssh, naformátujme disk a pripojíme ho do adresára:

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

Inštalácia čistého Centos 5.9

Pred inštaláciou systému je potrebné vytvoriť strom adresárov, pripojiť proc a sysfs a vytvoriť minimálnu sadu zariadení:

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

Systém nainštalujeme pomocou príkazu yum a nasledujúceho konfiguračného súboru:
mňam-centos.konf

[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

Po dokončení inštalácie môžete rovnakým spôsobom nainštalovať všetky potrebné balíky:

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

Upravme súbor 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 stále vyžaduje inštaláciu jadra s podporou xen:

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

Nainštalujme si Grub:

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

a vygenerujte nový 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

Je veľmi dôležité zadať všetky tieto parametre a nový súbor fstab, inak sa systém nespustí.
Ďalej musíte vytvoriť súbor menu.lst pre 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

Nastavme sieť a 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

Takto budeme mať funkčnú sieť a možnosť prihlásiť sa do inštancie pomocou kľúčov. Samotný kľúč však musí byť nejakým spôsobom preposlaný do inštancie. To sa dá urobiť pomocou skriptu, ktorý kľúč načíta a uloží ho do inštancie:

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

ec2-get-ssh#! / Bin / bash
# kontrola konfigurácie: 2345 95 20
# názov procesu: ec2-get-ssh
# popis: Zachytenie prihlasovacích údajov verejného kľúča AWS pre používateľa EC2

# Knižnica zdrojovej funkcie
. /etc/rc.d/init.d/functions

# Konfigurácia zdrojovej siete
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Nahraďte nasledujúce premenné prostredia pre váš systém
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Skontrolujte, či je sieť nakonfigurovaná
ak [ "${NETWORKING}" = "nie" ]; potom
echo "Sieť nie je nakonfigurovaná."
výstup 1
fi

start () {
ak [! -d /root/.ssh]; potom
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Získanie verejného kľúča zo servera metadát pomocou HTTP
curl -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
ak [$? -eq 0]; potom
echo "EC2: Získanie verejného kľúča zo servera metadát pomocou HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

zastaviť() {
echo „Tu nie je čo robiť“
}

reštart() {
prestať
Začať
}

# Pozri sa, ako nás volali.
prípad „1 dolár“ v
začať)
Začať
;;
zastaviť)
prestať
;;
reštart)
reštart
;;
*)
echo $"Použitie: $0 {štart|stop|reštart}"
výstup 1
že C

ukončiť $?
Spravme ho spustiteľným a pridajme ho do spustenia:

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

Taktiež je vhodné vypnúť Selinux alebo ho správne nakonfigurovať. V opačnom prípade sa napríklad kľúč nemusí uložiť v inštancii.
V tomto bode môžeme ukončiť nastavovanie systému. Už máme čistý CentOS, pripravené na spustenie v cloude. Zostáva už len odpojiť disk EBS obsahujúci náš systém a zaregistrovať AMI.

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

Registrácia AMI

Ak chcete získať súbor ami z disku ebs, musíte najprv vytvoriť snímku disku:

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

Najjednoduchší spôsob registrácie ami je prostredníctvom konzoly AWS Management Console. Ak to chcete urobiť, jednoducho prejdite do sekcie „Snímky“ v službe EC2 a vyberte požadovanú položku (v našom prípade je to centos-snap), kliknite naň pravým tlačidlom myši a vyberte možnosť „Vytvoriť obrázok zo snímky“
Potom v otvorenom okne musíte vybrať približne nasledujúce parametre:

Vytvorte si svoj obrázok s čistým CentOS 5.9 v cloude Amazon

Zvoliť ID jadra zistíte takto:

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 všetko. Teraz môžete spustiť inštancie.
Týmto spôsobom môžete vytvoriť obrázok, s najväčšou pravdepodobnosťou s akýmkoľvek Linux-distribúcia. Aspoň určite. Debian- (použitie debootstrapu na inštaláciu čistého systému) a rodina Rhel.

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster