Skip to content

Commit 389e63c

Browse files
committed
Homework dmitry-lyutenko#1: Create Vagrant box(5)
1 parent a3d7b5b commit 389e63c

File tree

1 file changed

+197
-0
lines changed

1 file changed

+197
-0
lines changed

README.md

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
# **Обновление ядра в базовой системе**
2+
3+
При выполнении задания использовалось следующее ПО:
4+
### **Хост**
5+
** ОС - Linux Mint 19.3 **
6+
** Гипервизор - VirtualBox 6.1.6**
7+
** Средство для создания и конфигурирования виртуальной среды - Vagrant 2.2.7 **
8+
** Создание образа виртуальной машины - Packer 1.5.5 **
9+
** Система контроля версий - Git 2.26.2 **
10+
11+
###**Виртуальные машины**
12+
** ОС - CentOS Linux 7.8 **
13+
14+
И аккаунты на
15+
https://github.com/ - для создания и размещения репозитория
16+
и https://app.vagrantup.com - для размещения готового бокса
17+
18+
19+
# **Установка ПО на хосте**
20+
21+
### **Vagrant**
22+
Установка Vagrant производилась по инструкции указанной в методичке к домашнему задании и не вызвала никаких затруднений. На момент установки последним релизом был 2.2.7 и работа выполнялась с ним, поэтому будет описан вариант установки этой версии.
23+
24+
```
25+
curl -O https://releases.hashicorp.com/vagrant/2.2.7/vagrant_2.2.7_x86_64.deb && \
26+
sudo dpkg -i vagrant_2.2.7_x86_64.deb
27+
```
28+
29+
Дополнительно, для удобства был установлен плагин который автоматически устанавливает дополнительные средства интеграции гостевой машины с хостом
30+
31+
```
32+
vagrant plugin install vagrant-vbguest
33+
```
34+
35+
Vagrant и плагин успешно установлены.
36+
37+
### **Packer**
38+
Установка Packer также проводилась по инструкции в методичке и не вызвала затруднений. На момент установки была 1.5.5 и работа выполнялась с ним, поэтому будет описан вариант установки этой версии.
39+
40+
```
41+
curl https://releases.hashicorp.com/packer/1.5.5/packer_1.5.5_linux_amd64.zip | \
42+
sudo gzip -d > /usr/local/bin/packer && \
43+
sudo chmod +x /usr/local/bin/packer
44+
```
45+
46+
Packer успешно установлен.
47+
48+
---
49+
50+
# **Работа с репозиторием**
51+
52+
### **Создание копии репозитория и её копирование на хост**
53+
Следуя инструкции из методички на сайте https://github.com была создана учётная запись, после это я создал свою ветвь репозитария https://github.com/dmitry-lyutenko/manual_kernel_update выполнив `fork`
54+
55+
После этого клонировал его на хост выполнив не нём команду:
56+
```
57+
git clone git@github.com:incertov/manual_kernel_update.git
58+
```
59+
Клонирование выполнено
60+
61+
62+
Далее перейдя в корневую директорию клонированного репозитария на хосте в терминале выполнил команду
63+
64+
```
65+
vagrant up
66+
```
67+
После выполнения всех операций виртуальная машины запустилась и была готова к работе.
68+
```
69+
vagrant ssh
70+
```
71+
72+
73+
### **Обновление ядра**
74+
Следуя методичке подключаем репозиторий откуда затем будет установлено ядро.
75+
```
76+
sudo yum install -y http://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
77+
```
78+
79+
Ставим последнее ядро:
80+
81+
```
82+
sudo yum --enablerepo elrepo-kernel install kernel-ml -y
83+
```
84+
Обновляем конфигурацию загрузчика:
85+
```
86+
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
87+
```
88+
Выбираем загрузку с новым ядром по-умолчанию:
89+
```
90+
sudo grub2-set-default 0
91+
```
92+
93+
Перезагружаем виртуальную машину:
94+
```
95+
sudo reboot
96+
```
97+
98+
После выполнения этих операций машина успешно загружается с новым ядром.
99+
100+
101+
---
102+
103+
# **Packer**
104+
Теперь с помощью packer создадём образ машины с обновленным ядром пятой версии. В директории packer уже есть файл centos.json, актуализируем его
105+
106+
### **centos.json**
107+
108+
В секции `"variables"` .
109+
110+
Создаем переменные (`variables`) с версией и названием нашего проекта (artifact):
111+
```
112+
"artifact_description": "CentOS 7.8 with kernel 5.x",
113+
"artifact_version": "7.8.2003",
114+
```
115+
116+
В секции `builders` задаем исходный образ, для создания своего в виде ссылки и контрольной суммы. По ходу выполнения задания выяснилось что версия дистрибутива описанная в методичке уже устарела и была заменена обновленной версией, в связи с этим актуализируем эту секцию
117+
118+
```
119+
"iso_url": "https://mirror.yandex.ru/centos/7.8.2003/isos/x86_64/CentOS-7-x86_64-Minimal-2003.iso",
120+
"iso_checksum": "659691c28a0e672558b003d223f83938f254b39875ee7559d1a4a14c79173193",
121+
"iso_checksum_type": "sha256",
122+
```
123+
В секции `post-processors` указываем имя файла, куда будет сохранен образ, в случае успешной сборки действия по методичке указываем итоговое имя бокса помня что оно формируется исходя из комбинации c `artifact_version` указанной в начале файла
124+
125+
```
126+
"output": "centos-{{user `artifact_version`}}-kernel-5-x86_64-Minimal.box",
127+
```
128+
129+
В секции `provisioners` указываем каким образом и какие действия необходимо произвести для настройки виртуальной машины. В данном случае необходимо установить дополнительный репозиторий и обновить из него ядро.
130+
131+
```
132+
"scripts" :
133+
[
134+
"scripts/stage-1-kernel-update.sh",
135+
"scripts/stage-2-clean.sh"
136+
]
137+
```
138+
Скрипты тоже потребовалось немного актуализировать. В `"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` в противном случае после обновления образ загружался в режиме аварийного восстановления.
139+
140+
### **packer build**
141+
142+
Выполняем сборку бокса
143+
```
144+
packer build centos.json
145+
```
146+
Скрипт успешно выполняется и в результате получаем файл: `centos-7.8.2003-kernel-5-x86_64-Minimal.box`
147+
148+
### **Тестирование полученного бокса**
149+
150+
Импортируем файл в `vagrant`
151+
152+
```
153+
vagrant box add --name centos-7-5 centos-7.8.2003-kernel-5-x86_64-Minimal.box
154+
```
155+
Убеждаемся в что операция выполнена:
156+
157+
```
158+
vagrant box list
159+
```
160+
Видим наш образ:
161+
162+
```
163+
centos-7-5 (virtualbox, 0)
164+
```
165+
166+
Создаем новую директорию и помещаем туда копию существующего `Vagrantfile` из первой части задания. Перейдя в неё в терминале выполняем команду
167+
168+
```
169+
vagrant up
170+
```
171+
Убеждаемся что образ машины исправен и загружается выполнив
172+
173+
```
174+
vagrant ssh
175+
```
176+
177+
Проверяем версию ядра
178+
179+
```
180+
uname -r
181+
```
182+
Если видим установленной пятую версию ядра значит обновление успешно применено и проверено на работоспособность.
183+
184+
# **Загрузка бокса**
185+
186+
```
187+
vagrant cloud auth login
188+
Vagrant Cloud username or email: <указываем свой email>
189+
Password (will be hidden): Пароль
190+
Token description (Defaults to "Vagrant login from DS-WS"):
191+
You are now logged in.
192+
```
193+
Публикуем полученный бокс:
194+
```
195+
vagrant cloud publish --release <username>/centos-7-5 1.2 virtualbox \
196+
centos-7.8.2003-kernel-5-x86_64-Minimal.box
197+

0 commit comments

Comments
 (0)