अमेज़ॅन क्लाउड में शुद्ध CentOS 5.9 के साथ अपनी स्वयं की छवि बनाना

जैसा कि आप जानते हैं, अमेज़ॅन क्लाउड में छवियों (तथाकथित) के आधार पर वर्चुअल इंस्टेंस लॉन्च किए जाते हैं एमी). Amazon предоставляет большое их количество, также можно использовать публичные образы, подготовленные сторонними организациями, за которые облачный провайдер, естественно, никакой ответственности не несёт. Но иногда нужен образ чистой системы с нужными параметрами, которого нет в списке образов. Тогда единственный выход — сделать свой AMI.

आधिकारिक दस्तावेज वर्णन करता है प्रक्रिया एक "इंस्टेंस स्टोर-समर्थित एएमआई" बनाना। इस दृष्टिकोण का नुकसान यह है कि तैयार छवि को "ईबीएस-समर्थित एएमआई" में परिवर्तित करने की भी आवश्यकता होगी।

मध्यवर्ती चरणों के बिना अमेज़ॅन क्लाउड में अपना खुद का ईबीएस-समर्थित एएमआई कैसे बनाएं, इस लेख में चर्चा की जाएगी।

कार्य योजना:

  • वातावरण तैयार करें
  • एक साफ़ सिस्टम स्थापित करें और आवश्यक सेटिंग्स करें
  • डिस्क का स्नैपशॉट लें
  • एएमआई पंजीकृत करें

पर्यावरण की तैयारी

हमारे उद्देश्यों के लिए, किसी भी आकार का कोई भी उदाहरण उपयुक्त है, यहां तक ​​कि t1.micro भी। आप इसे सीएलआई के माध्यम से चला सकते हैं:

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

आइए ईबीएस-वॉल्यूम बनाएं, जहां हम बाद में अपना सिस्टम इंस्टॉल करेंगे:

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

यह कमांड हमारे लिए 10 जीबी डिस्क बनाएगा। महत्वपूर्ण: डिस्क उदाहरण के समान क्षेत्र में होनी चाहिए (हमारे मामले में यह 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 !$

स्वच्छ सेंटोस 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

ग्रब स्थापित करें:

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 को निर्दिष्ट करना बहुत महत्वपूर्ण है, अन्यथा सिस्टम बूट नहीं होगा।
इसके बाद आपको ग्रब के लिए एक मेनू.एलएसटी फ़ाइल बनानी होगी:

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
# विवरण: EC2 उपयोगकर्ता के लिए AWS सार्वजनिक कुंजी क्रेडेंशियल कैप्चर करें

#स्रोत फ़ंक्शन लाइब्रेरी
. /etc/rc.d/init.d/functions

# Source networking configuration
[ -r /etc/sysconfig/network ] &&. /etc/sysconfig/network

# अपने सिस्टम के लिए निम्नलिखित पर्यावरण चर बदलें
निर्यात पथ=:/usr/स्थानीय/बिन:/usr/स्थानीय/sbin:/usr/bin:/usr/sbin:/bin:/sbin

# जांचें कि नेटवर्किंग कॉन्फ़िगर की गई है
यदि [ "${नेटवर्किंग}" = "नहीं" ]; तब
इको "नेटवर्किंग कॉन्फ़िगर नहीं है।"
बाहर निकलें 1
fi

शुरू () {
if [! -d /root/.ssh ]; then
mkdir -p /root/.ssh
चामोद 700 /रूट/.ssh
fi
# Retrieve public key from metadata server using HTTP
कर्ल -एफ 169.254.169.254/नवीनतम/मेटा-डेटा/सार्वजनिक-कुंजी/0/खुलता-कुंजी > /tmp/my-public-key
यदि [$? -eq 0 ]; तब
इको "EC2: HTTP का उपयोग करके मेटाडेटा सर्वर से सार्वजनिक कुंजी पुनर्प्राप्त करें।"
cat /tmp/my-public-key >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
आरएम /टीएमपी/मेरी-सार्वजनिक-कुंजी
fi
}

रुकना() {
प्रतिध्वनि "यहाँ करने को कुछ नहीं"
}

पुनः आरंभ करें() {
रुकें
प्रारंभ
}

# देखिए हमें कैसे बुलाया गया.
मामला "$ 1" में
शुरू)
प्रारंभ
;;
विराम)
रुकें
;;
पुनः आरंभ)
पुनः प्रारंभ
;;
*)
प्रतिध्वनि $"उपयोग: $0 {प्रारंभ|रोकें|पुनः आरंभ}"
बाहर निकलें 1
esac

बाहर निकलें $?
Сделаем его исполняемым и добавим в автозагрузку:

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

सेलिनक्स को अक्षम करने, या इसे सही ढंग से कॉन्फ़िगर करने की भी सलाह दी जाती है। अन्यथा, उदाहरण के लिए, कुंजी इंस्टेंस पर सहेजी नहीं जा सकेगी।
इस बिंदु पर आप सिस्टम सेट करना बंद कर सकते हैं। हमारे पास क्लाउड में चलने के लिए पहले से ही शुद्ध CentOS तैयार है। जो कुछ बचा है वह हमारे सिस्टम से ईबीएस डिस्क को अनमाउंट करना और एमी को पंजीकृत करना है।

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

एएमआई पंजीकरण

ईबीएस डिस्क से एमी प्राप्त करने के लिए, आपको सबसे पहले डिस्क का एक स्नैपशॉट लेना होगा:

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

AMI को पंजीकृत करने का सबसे आसान तरीका AWS प्रबंधन कंसोल है। ऐसा करने के लिए, आपको बस EC2 सेवा में "स्नैपशॉट" अनुभाग पर जाना होगा, जिसे आपको चाहिए उसे चुनें (हमारे मामले में यह सेंटोस-स्नैप है), उस पर राइट-क्लिक करें और "स्नैपशॉट से छवि बनाएं" चुनें।
फिर, खुलने वाली विंडो में, आपको लगभग निम्नलिखित मापदंडों का चयन करना होगा:

अमेज़ॅन क्लाउड में शुद्ध CentOS 5.9 के साथ अपनी स्वयं की छवि बनाना

Какой Kernel ID выбрать, можно узнать так:

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

बस इतना ही। अब आप इंस्टेंसेस लॉन्च कर सकते हैं।
इस तरह, आप संभवतः किसी भी लिनक्स वितरण के साथ एक छवि बना सकते हैं। कम से कम, निश्चित रूप से डेबियन (स्वच्छ सिस्टम स्थापित करने के लिए डीबूटस्ट्रैप का उपयोग करके) और रेल-परिवार।

स्रोत: www.habr.com

एक टिप्पणी जोड़ें