Δημιουργήστε τη δική σας εικόνα με καθαρό CentOS 5.9 στο Amazon cloud

Όπως γνωρίζετε, στο cloud του Amazon εκκινούνται εικονικές περιπτώσεις με βάση εικόνες (το λεγόμενο AMI). Η Amazon παρέχει μεγάλο αριθμό από αυτές· μπορείτε επίσης να χρησιμοποιήσετε δημόσιες εικόνες που έχουν προετοιμαστεί από τρίτους, για τις οποίες ο πάροχος cloud, φυσικά, δεν φέρει καμία ευθύνη. Αλλά μερικές φορές χρειάζεστε μια καθαρή εικόνα συστήματος με τις απαραίτητες παραμέτρους, η οποία δεν βρίσκεται στη λίστα εικόνων. Τότε η μόνη διέξοδος είναι να φτιάξετε το δικό σας AMI.

Η επίσημη τεκμηρίωση περιγράφει τρόπο δημιουργώντας ένα «instance store-backed AMI». Το μειονέκτημα αυτής της προσέγγισης είναι ότι η τελική εικόνα θα πρέπει επίσης να μετατραπεί σε "AMI που υποστηρίζεται από EBS"

Πώς να δημιουργήσετε το δικό σας AMI που υποστηρίζεται από EBS στο cloud του Amazon χωρίς ενδιάμεσα βήματα θα συζητηθεί σε αυτό το άρθρο.

Σχέδιο δράσης:

  • Προετοιμάστε το περιβάλλον
  • Εγκαταστήστε ένα καθαρό σύστημα και κάντε τις απαραίτητες ρυθμίσεις
  • Τραβήξτε ένα στιγμιότυπο του δίσκου
  • Εγγραφή AMI

Προετοιμασία του Περιβάλλοντος

Για τους σκοπούς μας, κάθε παράδειγμα οποιουδήποτε σχήματος είναι κατάλληλο, ακόμα και το t1.micro. Μπορείτε να το εκτελέσετε μέσω του CLI:

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

Ας δημιουργήσουμε το ebs-volume, όπου θα εγκαταστήσουμε το σύστημά μας αργότερα:

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

Αυτή η εντολή θα δημιουργήσει έναν δίσκο 10 Gb για εμάς. Σημαντικό: ο δίσκος πρέπει να βρίσκεται στην ίδια ζώνη με το στιγμιότυπο (στην περίπτωσή μας είναι us-east-1a).
Στη συνέχεια, πρέπει να επισυνάψετε το δίσκο στο παράδειγμα:

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

Τώρα ας συνδεθούμε στην παρουσία μέσω ssh, διαμορφώνουμε τον δίσκο και τον προσαρτούμε στον κατάλογο:

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

Εγκατάσταση καθαρού Centos 5.9

Πριν εγκαταστήσετε το σύστημα, πρέπει να δημιουργήσετε ένα δέντρο καταλόγου, να προσαρτήσετε το proc και το sysfs και να δημιουργήσετε ένα ελάχιστο σύνολο συσκευών:

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

Θα εγκαταστήσουμε το σύστημα χρησιμοποιώντας το yum και το ακόλουθο αρχείο ρυθμίσεων:
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

Αφού ολοκληρώσετε τη διαδικασία εγκατάστασης, μπορείτε να εγκαταστήσετε όλα τα απαραίτητα πακέτα με τον ίδιο τρόπο:

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

Ας επεξεργαστούμε το 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

Στο CentOS 5.9 πρέπει ακόμα να εγκαταστήσετε έναν πυρήνα με υποστήριξη xen:

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

Εγκαταστήστε το Grub:

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

και δημιουργήστε ένα νέο 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

Είναι πολύ σημαντικό να καθορίσετε όλες αυτές τις παραμέτρους και ένα νέο fstab, διαφορετικά το σύστημα δεν θα εκκινήσει.
Στη συνέχεια, πρέπει να δημιουργήσετε ένα αρχείο menu.lst για το 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

Ας ρυθμίσουμε το δίκτυο και το 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

Έτσι, θα έχουμε ένα λειτουργικό δίκτυο και τη δυνατότητα σύνδεσης στην παρουσία χρησιμοποιώντας τα κλειδιά. Αλλά το ίδιο το κλειδί πρέπει να μεταφερθεί με κάποιο τρόπο στο στιγμιότυπο. Αυτό μπορεί να γίνει χρησιμοποιώντας ένα σενάριο που θα πάρει το κλειδί και θα το αποθηκεύσει στο παράδειγμα:

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

ec2-get-ssh#! / bin / bash
# chkconfig: 2345 95 20
# όνομα διεργασίας: ec2-get-ssh
# περιγραφή: Λήψη διαπιστευτηρίων δημόσιου κλειδιού AWS για χρήστη EC2

Βιβλιοθήκη συναρτήσεων #Source
. /etc/rc.d/init.d/functions

# Διαμόρφωση δικτύου πηγής
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# Αντικαταστήστε τις ακόλουθες μεταβλητές περιβάλλοντος για το σύστημά σας
εξαγωγή PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# Ελέγξτε ότι η δικτύωση έχει διαμορφωθεί
if [ "${NETWORKING}" = "όχι" ]; έπειτα
echo "Η δικτύωση δεν έχει ρυθμιστεί."
έξοδος 1
fi

έναρξη () {
αν [! -d /root/.ssh ]; έπειτα
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Ανάκτηση δημόσιου κλειδιού από διακομιστή μεταδεδομένων χρησιμοποιώντας HTTP
μπούκλα -στ 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/my-public-key
αν [$? -ισ 0]; έπειτα
echo "EC2: Ανάκτηση δημόσιου κλειδιού από διακομιστή μεταδεδομένων χρησιμοποιώντας HTTP."
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
rm /tmp/my-public-key
fi
}

να σταματήσει() {
echo "Τίποτα να κάνω εδώ"
}

επανεκκίνηση() {
στάση
Εκκίνηση
}

# Δείτε πώς μας φώναζαν.
περίπτωση "$1" σε
αρχή)
Εκκίνηση
;;
να σταματήσει)
στάση
;;
επανεκκίνηση)
επανεκκίνηση
;;
*)
echo $"Χρήση: $0 {start|stop|restart}"
έξοδος 1
ότι Γ

έξοδος $;
Ας το κάνουμε εκτελέσιμο και ας το προσθέσουμε στην εκκίνηση:

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

Συνιστάται επίσης να απενεργοποιήσετε το Selinux ή να το ρυθμίσετε σωστά. Διαφορετικά, για παράδειγμα, το κλειδί ενδέχεται να μην αποθηκευτεί στην παρουσία.
Σε αυτό το σημείο μπορείτε να σταματήσετε τη ρύθμιση του συστήματος. Έχουμε ήδη καθαρό CentOS έτοιμο για εκτέλεση στο cloud. Το μόνο που μένει είναι να αποπροσαρτήσουμε τον δίσκο ebs με το σύστημά μας και να καταχωρήσουμε το ami.

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

Εγγραφή AMI

Για να λάβετε ami από έναν δίσκο ebs, πρέπει πρώτα να τραβήξετε ένα στιγμιότυπο του δίσκου:

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

Ο ευκολότερος τρόπος εγγραφής του ami είναι μέσω της Κονσόλας Διαχείρισης AWS. Για να το κάνετε αυτό, απλά πρέπει να μεταβείτε στην ενότητα "Στιγμιότυπα" στην υπηρεσία EC2, να επιλέξετε αυτό που χρειάζεστε (στην περίπτωσή μας είναι το centos-snap), κάντε δεξί κλικ πάνω του και επιλέξτε "Δημιουργία εικόνας από στιγμιότυπο"
Στη συνέχεια, στο παράθυρο που ανοίγει, πρέπει να επιλέξετε περίπου τις ακόλουθες παραμέτρους:

Δημιουργήστε τη δική σας εικόνα με καθαρό CentOS 5.9 στο Amazon cloud

Μπορείτε να μάθετε ποιο αναγνωριστικό πυρήνα να επιλέξετε ως εξής:

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

Αυτό είναι όλο. Τώρα μπορείτε να εκκινήσετε παρουσίες.
Με αυτόν τον τρόπο, μπορείτε να δημιουργήσετε μια εικόνα, πιθανότατα, με οποιαδήποτε διανομή Linux. Τουλάχιστον, σίγουρα το Debian (χρησιμοποιώντας το debootstrap για να εγκαταστήσετε ένα καθαρό σύστημα) και το Rhel-family.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο