Wéi Dir wësst, ginn an der Amazon Cloud virtuell Instanzen op Basis vu Biller (de sougenannte
Déi offiziell Dokumentatioun beschreift
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
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:
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