Создание Собственного Образа С Помощью Чистой Centos 5.9 В Облаке Amazon

Как известно, в облаке Amazon виртуальные экземпляры запускаются на основе образов (так называемые АМИ ).

Amazon предоставляет их большое количество; вы также можете использовать публичные изображения, подготовленные третьими лицами, за что провайдер облака, естественно, не несет никакой ответственности.

Но иногда вам нужен чистый образ системы с нужными параметрами, которого нет в списке образов.

Тогда единственный выход — сделать свой AMI. В официальной документации описано способ создание «AMI, поддерживаемого хранилищем экземпляров».

Недостаток этого подхода заключается в том, что готовый образ также необходимо будет преобразовать в «AMI с поддержкой EBS».

В этой статье будет обсуждаться, как создать собственный AMI на базе EBS в облаке Amazon без промежуточных шагов.

План Действий:

  • Подготовьте окружающую среду
  • Установите чистую систему и произведите необходимые настройки
  • Сделать снимок диска
  • Зарегистрировать АМИ


Подготовка окружающей среды

Для наших целей подойдет любой экземпляр любой формы, даже 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-том, куда позже установим нашу систему:

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 и следующий файл конфигурации: ням-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, иначе система не загрузится.

Далее вам нужно создать файл 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-получить-ssh #!/бин/баш # chkconfig: 2345 95 20 # имя процесса: ec2-get-ssh # описание: Захват учетных данных открытого ключа AWS для пользователя EC2. #Исходная библиотека функций .

/etc/rc.d/init.d/функции # Исходная сетевая конфигурация [ -r /etc/sysconfig/сеть ] &&.

/etc/sysconfig/сеть # Замените следующие переменные среды для вашей системы экспортировать PATH=:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin # Проверьте, настроена ли сеть if [ "${NETWORKING}" = "нет"]; затем echo «Сеть не настроена».

выход 1 фи начинать() { если [! -d /root/.

ssh]; затем mkdir -p /root/.

ssh chmod 700 /root/.

ssh фи # Получить открытый ключ с сервера метаданных с помощью HTTP локон -f 169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/мой-открытый ключ если [$? -экв 0 ]; затем echo «EC2: получить открытый ключ с сервера метаданных с помощью HTTP».

cat /tmp/мой-публичный-ключ > > /root/.

ssh/authorized_keys chmod 600 /root/.

ssh/authorized_keys rm /tmp/мой-открытый ключ фи } останавливаться() { эхо "Здесь нечего делать" } перезапуск() { останавливаться начинать } # Посмотрите, как нас звали.

случай "$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, готовая к работе в облаке.

Остается только размонтировать ebs диск с нашей системой и прописать ami.

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



регистрация АМИ

Чтобы получить ami с ebs-диска, сначала нужно сделать снимок диска:

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

Самый простой способ зарегистрировать ami — через Консоль управления AWS. Для этого вам просто нужно зайти в раздел «Снимки» в сервисе EC2, выбрать нужный (в нашем случае это centos-snap), нажать на него правой кнопкой мыши и выбрать «Создать образ из снимка» Затем в открывшемся окне нужно выбрать примерно следующие параметры:

Создание собственного образа с помощью чистой CentOS 5.9 в облаке Amazon

Узнать, какой 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

Вот и все.

Теперь вы можете запускать экземпляры.

Таким способом можно создать образ, скорее всего, с любым дистрибутивом Linux. По крайней мере, обязательно Debian (с использованием debootstrap для установки чистой системы) и семейство Rhel. Теги: #aws #ebs #centos #ami

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.