Saját kép létrehozása a tiszta CentOS 5.9 segítségével az Amazon felhőben

Mint ismeretes, az Amazon felhőjében képek alapján indulnak el a virtuális példányok (az ún AMI). Az Amazon rengeteget biztosít belőlük, harmadik fél által készített nyilvános képek is használhatók, amiért a felhőszolgáltatót természetesen semmilyen felelősség nem terheli. De néha szükség van egy tiszta rendszerképre a szükséges paraméterekkel, amely nem szerepel a képek listájában. Akkor az egyetlen kiút az, hogy saját AMI-t készít.

A hivatalos dokumentáció leírja módja „példányáruház által támogatott AMI” létrehozása. Ennek a megközelítésnek az a hátránya, hogy a kész képet is „EBS-támogatott AMI-vé” kell konvertálni.

Ebben a cikkben megvitatjuk, hogyan hozhat létre saját EBS-támogatott AMI-t az Amazon felhőben köztes lépések nélkül.

Cselekvési terv:

  • Készítse elő a környezetet
  • Telepítsen egy tiszta rendszert, és végezze el a szükséges beállításokat
  • Készítsen egy pillanatképet a lemezről
  • Regisztrálja az AMI-t

A környezet előkészítése

Célunkra bármilyen alakú példány megfelelő, még a t1.micro is. A CLI-n keresztül futtathatja:

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

Készítsünk ebs-kötetet, ahová később telepítjük a rendszerünket:

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

Ez a parancs egy 10 Gb-os lemezt készít nekünk. Fontos: a lemeznek ugyanabban a zónában kell lennie, mint a példánynak (esetünkben ez us-east-1a).
Ezután csatolnia kell a lemezt a példányhoz:

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

Most jelentkezzünk be a példányba ssh-n keresztül, formázza meg a lemezt, és csatolja be a könyvtárba:

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

A tiszta Centos 5.9 telepítése

A rendszer telepítése előtt létre kell hoznia egy könyvtárfát, fel kell csatolnia a procit és a sysf-eket, valamint létre kell hoznia egy minimális eszközkészletet:

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

A rendszert a yum és a következő konfigurációs fájl segítségével telepítjük:
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

A telepítési folyamat befejezése után a szükséges csomagokat ugyanúgy telepítheti:

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

Szerkesszük az fstab-t:

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

A CentOS 5.9-ben továbbra is telepítenie kell egy xen támogatással rendelkező kernelt:

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

Grub telepítése:

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

és hozzon létre egy új initrd-t:

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

Nagyon fontos megadni ezeket a paramétereket és egy új fstab-ot, különben a rendszer nem indul el.
Ezután létre kell hoznia egy menu.lst fájlt a grub számára:

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

Állítsuk be a hálózatot és az sshd-t:

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

Így egy működő hálózatot és lehetőséget kapunk, hogy a kulcsok segítségével bejelentkezzünk a példányba. De magát a kulcsot valahogy át kell vinni a példányba. Ezt megteheti egy szkript segítségével, amely elveszi a kulcsot, és elmenti azt a példányon:

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

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# folyamatnév: ec2-get-ssh
# leírás: Az AWS nyilvános kulcsú hitelesítő adatainak rögzítése az EC2 felhasználó számára

#Forrás függvénykönyvtár
. /etc/rc.d/init.d/functions

# Forrás hálózati konfiguráció
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Cserélje le a következő környezeti változókat a rendszeren
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Ellenőrizze, hogy a hálózat konfigurálva van-e
if [ "${NETWORKING}" = "nem" ]; akkor
echo "A hálózat nincs konfigurálva."
1. kijárat
fi

Rajt () {
ha [! -d /root/.ssh ]; akkor
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# A nyilvános kulcs lekérése a metaadat-kiszolgálóról HTTP használatával
göndör -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
ha [$? -eq 0]; akkor
echo "EC2: Nyilvános kulcs lekérése a metaadat-kiszolgálóról HTTP használatával."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

állj meg() {
echo "Itt nincs mit csinálni"
}

újrakezd() {
megáll
kezdet
}

# Nézze meg, hogyan hívtak minket.
tok "$1" in
Rajt)
kezdet
;;
állj meg)
megáll
;;
indítsa újra)
újraindítás
;;
*)
echo $"Használat: $0 {start|stop|restart}"
1. kijárat
hogy C

kilép $?
Tegyük végrehajthatóvá, és adjuk hozzá az indításhoz:

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

A Selinuxot is célszerű letiltani, vagy megfelelően beállítani. Ellenkező esetben például előfordulhat, hogy a kulcs nem kerül mentésre a példányon.
Ezen a ponton leállíthatja a rendszer beállítását. Már van egy tiszta CentOS, amely készen áll a felhőben való futtatásra. Már csak az ebs lemezt le kell csatolni a rendszerünkkel és regisztrálni ami.

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

AMI regisztráció

Az ami ebs lemezről való lekéréséhez először pillanatképet kell készítenie a lemezről:

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

Az ami regisztrációjának legegyszerűbb módja az AWS Management Console-on keresztül. Ehhez csak el kell lépnie az EC2 szolgáltatás „Pillanatképek” részébe, ki kell választania a kívántat (esetünkben centos-snap), kattintson rá jobb gombbal, és válassza a „Kép létrehozása pillanatképből” lehetőséget.
Ezután a megnyíló ablakban körülbelül a következő paramétereket kell kiválasztania:

Saját kép létrehozása a tiszta CentOS 5.9 segítségével az Amazon felhőben

A következőképpen találhatja meg, hogy melyik kernelazonosítót válassza:

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

Ez minden. Most elindíthat példányokat.
Ily módon valószínűleg bármilyen Linux disztribúcióval létrehozhat egy képet. Legalábbis határozottan Debian (debootstrap használatával tiszta rendszer telepítéséhez) és Rhel-család.

Forrás: will.com

Hozzászólás