Opret dit eget billede med ren CentOS 5.9 i Amazon-skyen

Som du ved, lanceres virtuelle forekomster i Amazon-skyen baseret på billeder (den såkaldte AMI). Amazon leverer et stort antal af dem; du kan også bruge offentlige billeder udarbejdet af tredjeparter, som cloud-udbyderen naturligvis ikke bærer noget ansvar for. Men nogle gange har du brug for et rent systembillede med de nødvendige parametre, som ikke er på listen over billeder. Så er den eneste udvej at lave din egen AMI.

Den officielle dokumentation beskriver måde oprettelse af en "forekomst butiksstøttet AMI". Ulempen ved denne tilgang er, at det færdige billede også skal konverteres til en "EBS-støttet AMI"

Denne artikel vil diskutere, hvordan du opretter din egen EBS-støttede AMI i Amazon-skyen uden mellemliggende trin.

Handlingsplan:

  • Forbered miljøet
  • Installer et rent system og foretag de nødvendige indstillinger
  • Tag et øjebliksbillede af disken
  • Registrer AMI

Forberedelse af miljøet

Til vores formål er enhver forekomst af enhver form egnet, selv t1.micro. Du kan køre det via CLI:

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

Lad os oprette ebs-volumen, hvor vi installerer vores system senere:

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

Denne kommando vil lave en 10 Gb disk til os. Vigtigt: Disken skal være i samme zone som instansen (i vores tilfælde er det us-east-1a).
Dernæst skal du vedhæfte disken til instansen:

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

Lad os nu logge ind på instansen via ssh, formatere disken og montere den i mappen:

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

Installation af ren Centos 5.9

Før du installerer systemet, skal du oprette et bibliotekstræ, montere proc og sysfs og oprette et minimumssæt af enheder:

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

Vi installerer systemet ved hjælp af yum og følgende konfigurationsfil:
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

Efter at have afsluttet installationsprocessen, kan du installere alle nødvendige pakker på samme måde:

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

Lad os redigere fstab:

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

I CentOS 5.9 skal du stadig installere en kerne med xen-understøttelse:

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

Installer Grub:

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

og generer en ny 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

Det er meget vigtigt at angive alle disse parametre og en ny fstab, ellers vil systemet ikke starte.
Dernæst skal du oprette en menu.lst fil til grub:

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

Lad os konfigurere netværket og 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

Dermed får vi et fungerende netværk og mulighed for at logge ind på instansen ved hjælp af tasterne. Men selve nøglen skal overføres til instansen på en eller anden måde. Dette kan gøres ved hjælp af et script, der vil tage nøglen og gemme det i instansen:

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

ec2-get-ssh#! / Bin / bash
# chkconfig: 2345 95 20
# procesnavn: ec2-get-ssh
# beskrivelse: Optag AWS offentlige nøglelegitimationsoplysninger for EC2-bruger

#Kildefunktionsbibliotek
. /etc/rc.d/init.d/functions

# Kilde netværkskonfiguration
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Erstat følgende miljøvariabler for dit system
eksport PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Kontroller, at netværk er konfigureret
if [ "${NETWORKING}" = "nej" ]; derefter
echo "Netværk er ikke konfigureret."
Afslut 1
fi

Start () {
hvis [! -d /root/.ssh ]; derefter
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Hent offentlig nøgle fra metadataserver ved hjælp af HTTP
krølle -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/min-offentlige-nøgle
hvis [$? -ækv 0]; derefter
echo "EC2: Hent offentlig nøgle fra metadataserver ved hjælp af HTTP."
kat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

hold op() {
ekko "Intet at gøre her"
}

genstart() {
stoppe
starte
}

# Se, hvordan vi blev kaldt.
case "$1" i
Start)
starte
;;
hold op)
stoppe
;;
genstart)
genstart
;;
*)
echo $"Brug: $0 {start|stop|genstart}"
Afslut 1
at C

afslutte $?
Lad os gøre det eksekverbart og tilføje det til opstart:

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

Det er også tilrådeligt at deaktivere Selinux eller konfigurere det korrekt. Ellers kan nøglen f.eks. ikke gemmes på instansen.
På dette tidspunkt kan du stoppe opsætningen af ​​systemet. Vi har allerede rent CentOS klar til at køre i skyen. Det eneste, der er tilbage, er at afmontere ebs-disken med vores system og registrere ami.

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

AMI registrering

For at hente ami fra en ebs-disk skal du først tage et snapshot af disken:

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

Den nemmeste måde at registrere ami på er gennem AWS Management Console. For at gøre dette skal du bare gå til sektionen "Snapshots" i EC2-tjenesten, vælge den, du har brug for (i vores tilfælde er det centos-snap), højreklikke på den og vælge "Create Image from Snapshot"
Derefter skal du i vinduet, der åbner, vælge omtrent følgende parametre:

Opret dit eget billede med ren CentOS 5.9 i Amazon-skyen

Du kan finde ud af hvilket kerne-id du skal vælge på følgende måde:

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

Det er alt. Nu kan du starte forekomster.
På denne måde kan du højst sandsynligt oprette et billede med enhver Linux-distribution. I det mindste bestemt Debian (bruger debootstrap til at installere et rent system) og Rhel-familien.

Kilde: www.habr.com

Tilføj en kommentar