Erstellt Äert eegent Bild mat pure CentOS 5.9 an der Amazon Cloud

Wéi Dir wësst, ginn an der Amazon Cloud virtuell Instanzen op Basis vu Biller (de sougenannte Ami). Amazon stellt eng grouss Zuel vun hinnen zur Verfügung; Dir kënnt och ëffentlech Biller benotzen, déi vun Drëttubidder virbereet sinn, fir déi de Cloud Provider natierlech keng Verantwortung dréit. Awer heiansdo brauch Dir e proppert Systembild mat den néidege Parameteren, wat net an der Lëscht vun de Biller ass. Dann ass deen eenzege Wee eraus Ären eegene AMI ze maachen.

Déi offiziell Dokumentatioun beschreift Wee eng "Instanz Store-ënnerstëtzt AMI" erstellen. Den Nodeel vun dëser Approche ass datt de fäerdege Bild och an en "EBS-backed AMI" ëmgewandelt muss ginn

Wéi Dir Ären eegene EBS-gestützte AMI an der Amazon Cloud ouni Zwësche Schrëtt erstellt, gëtt an dësem Artikel diskutéiert.

Aktiounsplang:

  • Preparéieren d'Ëmwelt
  • Installéiert e proppere System a maacht déi néideg Astellungen
  • Maacht e Snapshot vun der Disk
  • AMI Aschreiwung

Ëmweltvirbereedung

Fir eis Zwecker ass all Instanz vun all Form gëeegent, och t1.micro. Dir kënnt et iwwer de CLI lafen:

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

Loosst eis ebs-Volume erstellen, wou mir eise System spéider installéieren:

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

Dëse Kommando wäert eng 10 Gb Scheif fir eis maachen. Wichteg: d'Disk muss an der selwechter Zone wéi d'Instanz sinn (an eisem Fall ass et us-east-1a).
Als nächst musst Dir d'Disk an d'Instanz befestigen:

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

Loosst eis elo op d'Instanz iwwer ssh aloggen, d'Disk formatéieren an et am Verzeechnes montéieren:

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

Installéiert propper Centos 5.9

Ier Dir de System installéiert, musst Dir e Verzeichnisbaum erstellen, proc a sysfs montéieren an e Minimum Set vun Apparater erstellen:

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

Mir installéieren de System mat Yum an déi folgend Konfiguratiounsdatei:
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

Nodeems Dir den Installatiounsprozess ofgeschloss hutt, kënnt Dir all néideg Packagen op déiselwecht Manéier installéieren:

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

Loosst eis fstab änneren:

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

Am CentOS 5.9 musst Dir nach ëmmer e Kernel mat Xen Support installéieren:

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

Grub installéieren:

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

a generéiert en neien 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

Et ass ganz wichteg all dës Parameteren an eng nei fstab ze spezifizéieren, soss wäert de System net booten.
Als nächst musst Dir eng menu.lst Datei fir Grub erstellen:

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

Loosst eis de Netzwierk an sshd konfiguréieren:

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

Also kréie mir e funktionnéierend Netzwierk an d'Fäegkeet fir an d'Instanz mat de Schlësselen aloggen. Awer de Schlëssel selwer muss iergendwéi op d'Instanz transferéiert ginn. Dëst kann mat engem Skript gemaach ginn, deen de Schlëssel hëlt an et op der Instanz späichert:

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

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# Prozessnumm: ec2-get-ssh
# Beschreiwung: Fang AWS ëffentlech Schlëssel Umeldungsinformatiounen fir EC2 Benotzer

# Quell Funktioun Bibliothéik
. /etc/rc.d/init.d/functions

# Quell Netzwierkkonfiguratioun
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Ersetzt déi folgend Ëmfeldvariablen fir Äre System
export PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Kontrolléiert datt d'Netzwierk konfiguréiert ass
wann ["${NETWORKING}" = "nee" ]; dann
echo "Netzwierk ass net konfiguréiert."
Sortie 1
fi

ufänken () {
wann [! -d /root/.ssh ]; dann
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Recuperéiert ëffentleche Schlëssel vum Metadatenserver mat HTTP
krullen -f 169.254.169.254/läscht/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
wann [$? -eq 0 ; dann
echo "EC2: Recuperéiert ëffentleche Schlëssel vum Metadatenserver mat HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

stoppen() {
echo "Näischt hei ze maachen"
}

Neistart() {
ophalen
Ufank
}

# Kuckt wéi mir genannt goufen.
Fall "$1" an
ufänken)
Ufank
;;
stoppen)
ophalen
;;
Neistart)
Neistart
;;
*)
echo $"Gebrauch: $0 {Start|Stop|Restart}"
Sortie 1
datt C

Sortie $?
Loosst eis et ausführbar maachen a fügen se un de Startup:

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

Et ass och unzeroden Selinux auszeschalten oder et richteg ze konfiguréieren. Soss, zum Beispill, kann de Schlëssel net op der Instanz gespäichert ginn.
Zu dësem Zäitpunkt kënnt Dir ophalen de System opzestellen. Mir hu scho pure CentOS prett fir an der Wollek ze lafen. Alles wat bleift ass den ebs-Disk mat eisem System ze demontéieren an ami registréieren.

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

AMI Aschreiwung

Fir Ami vun enger ebs Disk ze kréien, musst Dir als éischt e Snapshot vun der Disk maachen:

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

Deen einfachste Wee fir Ami ze registréieren ass duerch d'AWS Management Console. Fir dëst ze maachen, musst Dir just an d'Sektioun "Snapshots" am EC2 Service goen, wielt deen deen Dir braucht (an eisem Fall ass et centos-snap), klickt op et a wielt "Create Image from Snapshot"
Dann, an der Fënster déi opmaacht, musst Dir ongeféier déi folgend Parameteren auswielen:

Erstellt Äert eegent Bild mat pure CentOS 5.9 an der Amazon Cloud

Dir kënnt erausfannen wéi eng Kernel ID wéi follegt ze wielen:

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

Dat ass alles. Elo kënnt Dir Instanzen starten.
Op dës Manéier kënnt Dir e Bild erstellen, héchstwahrscheinlech, mat all Linux Verdeelung. Op d'mannst, definitiv Debian (benotzt Debootstrap fir e proppere System z'installéieren) a Rhel-Famill.

Source: will.com

Setzt e Commentaire