Ako viete, v cloude Amazon sa virtuálne inštancie spúšťajú na základe obrázkov (tzv
Popisuje oficiálna dokumentácia
O tom, ako si vytvoriť vlastné AMI podporované EBS v cloude Amazon bez medzikrokov, sa bude diskutovať v tomto článku.
Akčný plán:
- Pripravte prostredie
- Nainštalujte čistý systém a vykonajte potrebné nastavenia
- Urobte snímku disku
- Zaregistrujte AMI
Príprava prostredia
Pre naše účely je vhodná akákoľvek inštancia akéhokoľvek tvaru, dokonca aj t1.micro. Môžete ho 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 ebs-volume, do ktorého 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-východ-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ásime do inštancie cez ssh, naformátujeme 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 musíte 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 yum a nasledujúceho konfiguračného súboru:
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
Po dokončení procesu 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
Upravíme 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
V CentOS 5.9 stále musíte nainštalovať jadro s podporou xen:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Nainštalujte 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ý 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
Nakonfigurujeme 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
Získame tak fungujúcu sieť a možnosť prihlásiť sa do inštancie pomocou kľúčov. Samotný kľúč je však potrebné nejako preniesť do inštancie. Dá sa to urobiť pomocou skriptu, ktorý vezme kľúč a uloží ho do inštancie:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-get-ssh#! / Bin / bash
# chkconfig: 2345 95 20
# názov procesu: ec2-get-ssh
# description: Zachytenie poverení verejného kľúča AWS pre používateľa EC2
#Knižnica funkcií zdroja
. /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á
if [ "${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ískajte verejný kľúč zo servera metadát pomocou HTTP
curl -f
ak [$? -ekv 0]; potom
echo "EC2: Získať verejný kľúč 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
}
stop() {
echo "Tu nie je čo robiť"
}
reštart() {
prestať
Začať
}
# Pozri, ako nás volali.
prípad "$ 1" v
začať)
Začať
;;
zastaviť)
prestať
;;
reštart)
reštart
;;
*)
echo $"Použitie: $0 {start|stop|restart}"
výstup 1
že C
ukončiť $?
Urobme ho spustiteľným a pridajte 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
Je tiež 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ôžete zastaviť nastavovanie systému. Už máme pripravený čistý CentOS na prevádzku v cloude. Zostáva len odpojiť ebs disk s naším systémom a zaregistrovať ami.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
Registrácia AMI
Ak chcete získať ami z ebs disku, musíte najprv urobiť snímku disku:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Najjednoduchší spôsob registrácie ami je prostredníctvom riadiacej konzoly AWS. Ak to chcete urobiť, stačí prejsť do sekcie „Snímky“ v službe EC2, vybrať ten, ktorý potrebujete (v našom prípade je to centos-snap), kliknúť naň pravým tlačidlom myši a vybrať možnosť „Vytvoriť obrázok zo snímky“
Potom v okne, ktoré sa otvorí, musíte vybrať približne nasledujúce parametre:
Ktoré ID jadra si vybrať, 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 pomocou akejkoľvek distribúcie Linuxu. Aspoň určite Debian (pomocou debootstrapu na inštaláciu čistého systému) a rodina Rhel.
Zdroj: hab.com