Luo oma kuva puhtaalla CentOS 5.9:llä Amazon-pilvessä

Kuten tiedät, Amazon-pilvessä käynnistetään kuviin perustuvia virtuaalisia instansseja (ns AMI). Amazon tarjoaa niitä suuren määrän, voit käyttää myös kolmansien osapuolien valmistamia julkisia kuvia, joista pilvipalveluntarjoaja ei tietenkään ota vastuuta. Mutta joskus tarvitset puhtaan järjestelmäkuvan tarvittavilla parametreilla, joita ei ole kuvaluettelossa. Sitten ainoa tie ulos on tehdä oma AMI.

Virallinen dokumentaatio kuvaa tapa luomalla "instanssikaupan tukeman AMI:n". Tämän lähestymistavan haittana on, että valmis kuva on myös muutettava "EBS-tuetuksi AMI:ksi".

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 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
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:

Luo oma kuva puhtaalla CentOS 5.9:llä Amazon-pilvessä

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

Lisää kommentti