Vytvoření vlastního obrazu s čistým CentOS 5.9 v cloudu Amazon

Jak víte, v cloudu Amazon jsou virtuální instance spouštěny na základě obrázků (tzv AMI). Amazon jich poskytuje velké množství, využít můžete i veřejné obrázky připravené třetími stranami, za což poskytovatel cloudu samozřejmě nenese žádnou odpovědnost. Někdy ale potřebujete čistý obraz systému s potřebnými parametry, který není v seznamu obrazů. Pak je jediným východiskem vytvořit si vlastní AMI.

Popisuje oficiální dokumentace způsobem vytvoření „instance store-backed AMI“. Nevýhodou tohoto přístupu je, že hotový obraz bude také nutné převést na „EBS-backed AMI“

Jak vytvořit vlastní AMI podporované EBS v cloudu Amazon bez mezikroků bude probráno v tomto článku.

Akční plán:

  • Připravte prostředí
  • Nainstalujte čistý systém a proveďte potřebná nastavení
  • Udělejte snímek disku
  • Zaregistrujte AMI

Příprava prostředí

Pro naše účely je vhodná jakákoli instance jakéhokoli tvaru, dokonce i t1.micro. Můžete jej spustit přes CLI:

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

Vytvořme ebs-volume, kam později nainstalujeme náš systém:

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

Tento příkaz nám vytvoří 10 Gb disk. Důležité: disk musí být ve stejné zóně jako instance (v našem případě je to us-východ-1a).
Dále je třeba připojit disk k instanci:

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

Nyní se přihlásíme k instanci přes ssh, naformátujeme disk a připojíme jej do adresáře:

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

Instalace čistého Centos 5.9

Před instalací systému musíte vytvořit strom adresářů, připojit proc a sysfs a vytvořit minimální sadu zařízení:

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 nainstalujeme pomocí yum a následujícího konfiguračního souboru:
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í instalačního procesu můžete stejným způsobem nainstalovat všechny potřebné balíčky:

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

Pojďme upravit 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 nainstalovat jádro s podporou xen:

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

Nainstalujte 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 velmi důležité zadat všechny tyto parametry a nový fstab, jinak se systém nespustí.
Dále musíte vytvořit soubor menu.lst pro 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

Pojďme nakonfigurovat síť 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ískáme tak funkční síť a možnost přihlásit se do instance pomocí klíčů. Samotný klíč je ale potřeba nějak přenést do instance. To lze provést pomocí skriptu, který vezme klíč a uloží jej do instance:

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

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# název procesu: ec2-get-ssh
# description: Zachyťte přihlašovací údaje veřejného klíče AWS pro uživatele EC2

#Knihovna funkcí zdroje
. /etc/rc.d/init.d/functions

# Konfigurace sítě zdroje
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Nahraďte následující proměnné prostředí pro váš systém
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Zkontrolujte, zda je nakonfigurována síť
if [ "${NETWORKING}" = "ne" ]; pak
echo "Síť není nakonfigurována."
výjezd 1
fi

Start () {
pokud [! -d /root/.ssh ]; pak
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Získejte veřejný klíč ze serveru metadat pomocí HTTP
kadeř -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
pokud [ $? -ekv 0]; pak
echo "EC2: Získání veřejného klíče ze serveru metadat pomocí HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

stop() {
echo "Tady není co dělat"
}

restart() {
zastavit
Začít
}

# Podívejte se, jak se nám říkalo.
pouzdro "$1" in
Start)
Začít
;;
stop)
zastavit
;;
restart)
znovu
;;
*)
echo $"Využití: $0 {start|stop|restart}"
výjezd 1
že C.

opustit $?
Udělejme jej spustitelný a přidejte jej do spuštění:

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 také vhodné vypnout Selinux, případně jej správně nakonfigurovat. Jinak se například nemusí klíč uložit do instance.
V tomto okamžiku můžete ukončit nastavování systému. Čistý CentOS již máme připravený ke spuštění v cloudu. Zbývá pouze odpojit ebs disk s naším systémem a zaregistrovat ami.

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

registrace AMI

Chcete-li získat ami z disku ebs, musíte nejprve pořídit snímek disku:

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

Nejjednodušší způsob, jak zaregistrovat ami, je prostřednictvím AWS Management Console. Chcete-li to provést, stačí přejít do sekce „Snímky“ ve službě EC2, vybrat ten, který potřebujete (v našem případě je to centos-snap), kliknout na něj pravým tlačítkem a vybrat „Vytvořit obrázek ze snímku“
Poté v okně, které se otevře, musíte vybrat přibližně následující parametry:

Vytvoření vlastního obrazu s čistým CentOS 5.9 v cloudu Amazon

Které ID jádra vybrat, zjistí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še. Nyní můžete spustit instance.
Tímto způsobem můžete vytvořit obraz s největší pravděpodobností s jakoukoli distribucí Linuxu. Alespoň určitě Debian (pomocí debootstrapu k instalaci čistého systému) a rodina Rhel.

Zdroj: www.habr.com

Přidat komentář