همانطور که می دانید در ابر آمازون نمونه های مجازی بر اساس تصاویر راه اندازی می شوند (به اصطلاح
اسناد رسمی توضیح می دهد
نحوه ایجاد AMI با پشتیبانی EBS خود در ابر آمازون بدون مراحل میانی در این مقاله مورد بحث قرار خواهد گرفت.
برنامه عملیاتی:
- محیط را آماده کنید
- یک سیستم تمیز نصب کنید و تنظیمات لازم را انجام دهید
- یک عکس فوری از دیسک بگیرید
- ثبت نام 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 گیگ برای ما می سازد. مهم: دیسک باید در همان منطقه نمونه باشد (در مورد ما 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 ضبط کنید
#کتابخانه تابع منبع
. /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 بازیابی کنید
حلقه -f
اگر [$? -eq 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 {شروع|توقف|راه اندازی مجدد}"
خروج 1
که C
از $ خارج می شوید؟
بیایید آن را اجرایی کنیم و به راه اندازی اضافه کنیم:
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 خالص را آماده اجرا در فضای ابری داریم. تنها چیزی که باقی می ماند این است که دیسک ebs را با سیستم خود unmount کرده و 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 است. برای انجام این کار، فقط باید به بخش "Snapshots" در سرویس EC2 بروید، مورد مورد نیاز خود را انتخاب کنید (در مورد ما centos-snap است)، روی آن کلیک راست کرده و "Create Image from Snapshot" را انتخاب کنید.
سپس در پنجره ای که باز می شود باید تقریباً پارامترهای زیر را انتخاب کنید:
شما می توانید به صورت زیر دریابید که کدام شناسه هسته را انتخاب کنید:
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
همین. اکنون می توانید نمونه ها را راه اندازی کنید.
به این ترتیب، به احتمال زیاد با هر توزیع لینوکس می توانید یک تصویر ایجاد کنید. حداقل، قطعاً Debian (استفاده از debootstrap برای نصب یک سیستم تمیز) و Rhel-family.
منبع: www.habr.com