Kernel Update
Last updated
Was this helpful?
Last updated
Was this helpful?
Переходим на выбираем соответствующую версию. В данном случае Debian 64-bit и версия 2.2.6. Копируем ссылку и в консоли выполняем:
После успешного окончания будет установлен Vagrant.
Переходим на выбираем соответствующую версию. В данном случае Linux 64-bit и версия 1.4.4. скачал файл на пк
После успешного окончания будет установлен Packer.
Для запуска рабочего виртуального окружения необходимо зайти через браузер в GitHub под своей учетной записью и выполнить fork данного репозитория:
После этого данный репозиторий необходимо склонировать к себе на рабочую машину. Для этого воспользуемся ранее установленным приложением git, при этом в <user_name> будет имя уже вашего репозитрия:
В текущей директории появится папка с именем репозитория. В данном случае manual_kernel_update. Ознакомимся с содержимым:
manual packer Vagrantfile
Здесь:
Запустим виртуальную машину и залогинимся:
... ==> kernel-update: Importing base box 'centos/7'... ... ==> kernel-update: Booting VM... ... ==> kernel-update: Setting hostname...
[vagrant@kernel-update ~]$ uname -r 3.10.0-957.12.2.el7.x86_64
Теперь приступим к обновлению ядра.
Подключаем репозиторий, откуда возьмем необходимую версию ядра.
В репозитории есть две версии ядер kernel-ml и kernel-lt. Первая является наиболее свежей стабильной версией, вторая это стабильная версия с длительной поддержкой, но менее свежая, чем первая. В данном случае ядро 5й версии будет в kernel-ml.
Поскольку мы ставим ядро из репозитория, то установка ядра похожа на установку любого другого пакета, но потребует явного включения репозитория при помощи ключа --enablerepo.
Ставим последнее ядро:
После успешной установки нам необходимо сказать системе, что при загрузке нужно использовать новое ядро. В случае обновления ядра на рабочих серверах необходимо перезагрузиться с новым ядром, выбрав его при загрузке. И только при успешно прошедших загрузке нового ядра и тестах сервера переходить к загрузке с новым ядром по-умолчанию. В тестовой среде можно обойти данный этап и сразу назначить новое ядро по-умолчанию.
Выбираем загрузку с новым ядром по-умолчанию:
Перезагружаем виртуальную машину:
После перезагрузки виртуальной машины (3-4 минуты, зависит от мощности хостовой машины) заходим в нее и выполняем:
Теперь необходимо создать свой образ системы, с уже установленым ядром 5й версии. Для это воспользуемся ранее установленной утилитой packer. В директории packer есть все необходимые настройки и скрипты для создания необходимого образа системы. packer provision config
В ходе работы по мануалу выяснилось, что на яндексе указанную в мануале версию Centos перестали поддерживать пришлось редактировать файл centos.json, который содержит описание того, как произвольный образ. Полное описание можно найти в документации к packer. Обратим внимание на основные секции или ключи.
Создаем переменные (variables) с версией и названием нашего проекта (artifact):
В секции builders задаем исходный образ, для создания своего в виде ссылки и контрольной суммы. Параметры подключения к создаваемой виртуальной машине.
В секции post-processors указываем имя файла, куда будет сохранен образ, в случае успешной сборки
В секции provisioners указываем каким образом и какие действия необходимо произвести для настройки виртуальой машины. Именно в этой секции мы и обновим ядро системы, чтобы можно было получить образ с 5й версией ядра. Настройка системы выполняется несколькими скриптами, заданными в секции scripts.
Скрипты будут выполнены в порядке указания. Первый скрипт включает себя набор команд, которые мы ранее выполняли вручную, чтобы обновить ядро. Второй скрипт занимается подготовкой системы к упаковке в образ. Она заключается в очистке директорий с логами, временными файлами, кешами. Это позволяет уменьшить результирующий образ. Более подробно можно ознакомиться с ними в директории packer/scripts
Секция post-processors описывает постобработку виртуальной машины при ее выгрузке. Мы указыаем имя файла, в который будет сохранен результат (artifact). Обратите внимание, что имя задается на основе ранее созданной пользовательской переменной artifact_version значение которой мы задали ранее:
Для создания образа системы достаточно перейти в директорию packer и в ней выполнить команду:
Если все в порядке, то, согласно файла config.json будет скачан исходный iso-образ CentOS, установлен на виртуальную машину в автоматическом режиме, обновлено ядро и осуществлен экспорт в указанный нами файл. Если не вносилось изменений в предложенные файлы, то в текущей директории мы увидим файл centos-7.7.1908-kernel-5-x86_64-Minimal.box. Он и является результатом работы packer.
Проведем тестирование созданного образа. Выполним его импорт в vagrant:
Проверим его в списке имеющихся образов (ваш вывод может отличаться):
centos-7-5 (virtualbox, 0)
Он будет называться centos-7-5, данное имя мы задали при помощи параметра name при импорте.
Теперь необходимо провести тестирование полученного образа. Для этого создадим новый Vagrantfile или воспользуемся имеющимся. Для нового создадим директорию test и в ней выполним:
Для имеющегося произведем замену значения box_name на имя импортированного образа. Соотвествующая строка примет вид:
:box_name => "centos-7-5",
Теперь запустим виртуальную машину, подключимся к ней и проверим, что у нас в ней новое ядро:
... vagrant ssh
и внутри виртуальной машины:
[vagrant@kernel-update ~]$ uname -r 5.3.1-1.el7.elrepo.x86_64
Если все в порядке, то машина будет запущена и загрузится с новым ядром. В данном примере это 5.3.1.
Удалим тестовый образ из локального хранилища:
Vagrant cloud
Поделимся полученным образом с сообществом. Для этого зальем его в Vagrant Cloud. Можно залить через web-интерфейс, но так же vagrant позволяет это проделать через CLI. Логинимся в vagrant cloud, указывая e-mail, пароль и описание выданого токена (можно оставить по-умолчанию)
Теперь публикуем полученный бокс:
Здесь:
После успешной загрузки вы получите сообщение:
Complete! Published /centos-7-5 tag: /centos-7-5-cli username: name: centos-7-5 private: false ... providers: virtualbox
В результате создан и загружен в vagrant cloud образ виртуальной машины. Данный подход позволяет создать базовый образ виртульной машины с необходимыми обновлениями или набором предустановленного ПО. К примеру при создании MySQL-кластера можно создать образ с предустановленным MySQL, а при развертывании нужно будет добавить или изменить только настройки (то есть отличающуюся часть). Таким образом существенно экономя затрачиваемое время.