Kuten tiedät, Amazon-pilvessä käynnistetään kuviin perustuvia virtuaalisia instansseja (ns
Virallinen dokumentaatio kuvaa
Tässä artikkelissa käsitellään oman EBS:n tukeman AMI:n luomista Amazon-pilveen ilman välivaiheita.
Toimintasuunnitelma:
- Valmistele ympäristö
- Asenna puhdas järjestelmä ja tee tarvittavat asetukset
- Ota tilannekuva levystä
- Rekisteröidy AMI
Ympäristön valmistelu
Meidän tarkoituksiimme sopii mikä tahansa muoto, jopa t1.micro. Voit suorittaa sen CLI:n kautta:
aws ec2 run-instances --image-id ami-1624987f --max-count 1 --min-count 1 --key-name mel --instance-type t1.micro
Luodaan ebs-volume, johon asennamme järjestelmämme myöhemmin:
aws ec2 create-volume --availability-zone us-east-1a --size 10
Tämä komento tekee meille 10 Gt:n levyn. Tärkeää: levyn on oltava samalla vyöhykkeellä kuin esiintymä (tapauksessamme se on us-east-1a).
Seuraavaksi sinun on liitettävä levy esiintymään:
aws ec2 attach-volume --instance-id i-2bc0925b --volume-id vol-08ab3079 --device /dev/xvdf
Nyt kirjaudutaan sisään ilmentymään ssh:n kautta, alustetaan levy ja liitetään se hakemistoon:
mkfs.ext3 /dev/xvdf
mkdir /mnt/centos-image
mount /dev/xvdf /mnt/centos-image
cd !$
Puhtaan Centos 5.9:n asentaminen
Ennen järjestelmän asentamista sinun on luotava hakemistopuu, liitettävä pro- ja sysfs-tiedostot sekä luotava vähimmäismäärä laitteita:
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
Asennamme järjestelmän käyttämällä yumia ja seuraavaa asetustiedostoa:
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
Kun asennus on valmis, voit asentaa tarvittavat paketit samalla tavalla:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ install $packet_name
Muokataan fstab:ta:
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
CentOS 5.9:ssä sinun on silti asennettava xen-tuella varustettu ydin:
yum -c ~/yum-centos.conf --installroot=/mnt/centos-image/ -y install kernel-xen
Asenna Grub:
chroot /mnt/centos-image/ grub-install /dev/xvdf
ja luo uusi 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
On erittäin tärkeää määrittää kaikki nämä parametrit ja uusi fstab, muuten järjestelmä ei käynnisty.
Seuraavaksi sinun on luotava menu.lst-tiedosto grubille:
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
Määritetään verkko ja 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
Näin saamme toimivan verkon ja mahdollisuuden kirjautua instanssiin avaimilla. Mutta itse avain on siirrettävä ilmentymään jotenkin. Tämä voidaan tehdä komentosarjalla, joka ottaa avaimen ja tallentaa sen ilmentymään:
vi /mnt/centos5img/etc/init.d/ec2-get-ssh
ec2-get-ssh#! / Bin / bash
# chkconfig: 2345 95 20
# prosessinimi: ec2-get-ssh
# kuvaus: Kaappaa AWS:n julkisen avaimen tunnistetiedot EC2-käyttäjälle
#Lähdefunktiokirjasto
. /etc/rc.d/init.d/functions
# Lähdeverkkomääritys
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network
# Korvaa seuraavat järjestelmäsi ympäristömuuttujat
vie PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# Tarkista, että verkkoyhteys on määritetty
if [ "${NETWORKING}" = "ei" ]; sitten
echo "Verkkoa ei ole määritetty."
poistu 1
fi
alku () {
jos [! -d /juuri/.ssh ]; sitten
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Hae julkinen avain metatietopalvelimelta HTTP:n avulla
curl -f
jos [$? -ekv 0]; sitten
echo "EC2: Hae julkinen avain metatietopalvelimelta HTTP:n avulla."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}
lopettaa() {
echo "Täällä ei ole mitään tekemistä"
}
uudelleenkäynnistää() {
pysäkki
Alkaa
}
# Katso kuinka meitä kutsuttiin.
kotelo "$1" in
alkaa)
Alkaa
;;
lopettaa)
pysäkki
;;
uudelleenkäynnistys)
uudelleenkäynnistys
;;
*)
echo $"Käyttö: $0 {start|stop|restart}"
poistu 1
ESAC
poistua $?
Tehdään siitä suoritettava ja lisätään käynnistykseen:
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
On myös suositeltavaa poistaa Selinux käytöstä tai määrittää se oikein. Muuten esimerkiksi avainta ei ehkä tallenneta ilmentymään.
Tässä vaiheessa voit lopettaa järjestelmän asennuksen. Meillä on jo puhdas CentOS valmiina toimimaan pilvessä. Jäljelle jää vain irrottaa ebs-levy järjestelmästämme ja rekisteröidä ami.
umount /mnt/centos-image/proc/
umount /mnt/centos-image/sys/
umount /mnt/centos-image/
AMI rekisteröinti
Saadaksesi ami ebs-levyltä, sinun on ensin otettava tilannekuva levystä:
aws ec2 create-snapshot --volume-id vol-0b4bd07a --description centos-snap
Helpoin tapa rekisteröidä ami on AWS-hallintakonsolin kautta. Tätä varten sinun tarvitsee vain mennä EC2-palvelun "Snapshots" -osioon, valita tarvitsemasi (tapauksessamme se on centos-snap), napsauta sitä hiiren kakkospainikkeella ja valitse "Luo kuva tilannekuvasta".
Sitten avautuvassa ikkunassa sinun on valittava suunnilleen seuraavat parametrit:
Voit selvittää, mikä ydintunnus valitaan seuraavasti:
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
Siinä kaikki. Nyt voit käynnistää ilmentymiä.
Tällä tavalla voit luoda kuvan mitä tahansa Linux-jakelua varten. Ainakin ehdottomasti Debian (käyttäen debootstrapia puhtaan järjestelmän asentamiseen) ja Rhel-perhe.
Lähde: will.com