Skip to content

Kernel update. Create custom box for Vagrant Clound. Packer.

Notifications You must be signed in to change notification settings

incertov/manual_kernel_update

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Обновление ядра в базовой системе

При выполнении задания использовалось следующее ПО:

Хост

** ОС - Linux Mint 19.3 ** ** Гипервизор - VirtualBox 6.1.6** ** Средство для создания и конфигурирования виртуальной среды - Vagrant 2.2.7 ** ** Создание образа виртуальной машины - Packer 1.5.5 ** ** Система контроля версий - Git 2.26.2 **

###Виртуальные машины ** ОС - CentOS Linux 7.8 **

И аккаунты на https://github.com/ - для создания и размещения репозитория и https://app.vagrantup.com - для размещения готового бокса

Установка ПО на хосте

Vagrant

Установка Vagrant производилась по инструкции указанной в методичке к домашнему задании и не вызвала никаких затруднений. На момент установки последним релизом был 2.2.7 и работа выполнялась с ним, поэтому будет описан вариант установки этой версии.

curl -O https://releases.hashicorp.com/vagrant/2.2.7/vagrant_2.2.7_x86_64.deb && \
sudo dpkg -i vagrant_2.2.7_x86_64.deb

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

vagrant plugin install vagrant-vbguest

Vagrant и плагин успешно установлены.

Packer

Установка Packer также проводилась по инструкции в методичке и не вызвала затруднений. На момент установки была 1.5.5 и работа выполнялась с ним, поэтому будет описан вариант установки этой версии.

curl https://releases.hashicorp.com/packer/1.5.5/packer_1.5.5_linux_amd64.zip | \
sudo gzip -d > /usr/local/bin/packer && \
sudo chmod +x /usr/local/bin/packer

Packer успешно установлен.


Работа с репозиторием

Создание копии репозитория и её копирование на хост

Следуя инструкции из методички на сайте https://github.com была создана учётная запись, после это я создал свою ветвь репозитария https://github.com/dmitry-lyutenko/manual_kernel_update выполнив fork

После этого клонировал его на хост выполнив не нём команду:

git clone [email protected]:incertov/manual_kernel_update.git

Клонирование выполнено

Далее перейдя в корневую директорию клонированного репозитария на хосте в терминале выполнил команду

vagrant up

После выполнения всех операций виртуальная машины запустилась и была готова к работе.

vagrant ssh

Обновление ядра

Следуя методичке подключаем репозиторий откуда затем будет установлено ядро.

sudo yum install -y http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

Ставим последнее ядро:

sudo yum --enablerepo elrepo-kernel install kernel-ml -y

Обновляем конфигурацию загрузчика:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Выбираем загрузку с новым ядром по-умолчанию:

sudo grub2-set-default 0

Перезагружаем виртуальную машину:

sudo reboot

После выполнения этих операций машина успешно загружается с новым ядром.


Packer

Теперь с помощью packer создадём образ машины с обновленным ядром пятой версии. В директории packer уже есть файл centos.json, актуализируем его

centos.json

В секции "variables" .

Создаем переменные (variables) с версией и названием нашего проекта (artifact):

    "artifact_description": "CentOS 7.8 with kernel 5.x",
    "artifact_version": "7.8.2003",

В секции builders задаем исходный образ, для создания своего в виде ссылки и контрольной суммы. По ходу выполнения задания выяснилось что версия дистрибутива описанная в методичке уже устарела и была заменена обновленной версией, в связи с этим актуализируем эту секцию

"iso_url": "https://mirror.yandex.ru/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Minimal-2003.iso",
"iso_checksum": "659691c28a0e672558b003d223f83938f254b39875ee7559d1a4a14c79173193",
"iso_checksum_type": "sha256",

В секции post-processors указываем имя файла, куда будет сохранен образ, в случае успешной сборки действия по методичке указываем итоговое имя бокса помня что оно формируется исходя из комбинации c artifact_version указанной в начале файла

    "output": "centos-{{user `artifact_version`}}-kernel-5-x86_64-Minimal.box",

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

    "scripts" :
      [
        "scripts/stage-1-kernel-update.sh",
        "scripts/stage-2-clean.sh"
      ]

Скрипты тоже потребовалось немного актуализировать. В "scripts/stage-1-kernel-update.sh" заменен пакет репозитория на http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm , возможно это не требовалось, но так представлена более свежая версия пакета то замена была произведена. В "scripts/stage-2-clean.sh" после выполнения обновления загрузчика было изменено значение grub2-set-default 1 на grub2-set-default 0 в противном случае после обновления образ загружался в режиме аварийного восстановления.

packer build

Выполняем сборку бокса

packer build centos.json

Скрипт успешно выполняется и в результате получаем файл: centos-7.8.2003-kernel-5-x86_64-Minimal.box

Тестирование полученного бокса

Импортируем файл в vagrant

vagrant box add --name centos-7-5 centos-7.8.2003-kernel-5-x86_64-Minimal.box

Убеждаемся в что операция выполнена:

vagrant box list

Видим наш образ:

centos-7-5            (virtualbox, 0)

Создаем новую директорию и помещаем туда копию существующего Vagrantfile из первой части задания. Перейдя в неё в терминале выполняем команду

vagrant up

Убеждаемся что образ машины исправен и загружается выполнив

vagrant ssh

Проверяем версию ядра

uname -r

Если видим установленной пятую версию ядра значит обновление успешно применено и проверено на работоспособность.

Загрузка бокса

vagrant cloud auth login
Vagrant Cloud username or email: <указываем свой email>
Password (will be hidden): Пароль
Token description (Defaults to "Vagrant login from DS-WS"):
You are now logged in.

Публикуем полученный бокс:

vagrant cloud publish --release <username>/centos-7-5 1.2 virtualbox \
        centos-7.8.2003-kernel-5-x86_64-Minimal.box

About

Kernel update. Create custom box for Vagrant Clound. Packer.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 71.4%
  • Shell 28.6%