Top Advertising on Sys-Adm.in
3.66666666666671111111111Rating 3.67 (3 Votes)

vagrant logoВ прошлой статье я рассказывал про Vagrant. если кратко, то Vagrant это автоматизированная среда для виртуальных сред. В рамках статьи рассказывалось про сайты с которых можно загружать образы и использовать их в своей работе, НО если честно не ко всем образам есть доверие, в некоторых образах "выпилены" некоторые пакеты и т.п., это крайне неудобно и не безопасно, выход - создать свой образ, настроить его, установить нужные пакеты и конвертировать его в Vagrant Box.

В качестве базовой платформы будет использоваться CentOS 7 Minimal, я буду использовать свой автоматический образ (про него писал в статье Kickstart или Автоматическая установка CentOS Linux), этот образ будет сформирован в среде VirtualBox, дальше я расскажу о том:

  • Как создать машину, указать ей при этом нужные настройки
  • Как настроить машину для комфортной работы с Vagrant

Сразу предупрежу, что машина будет создаваться для тестовых сред, поэтому для комфортной работы некоторые настройки безопасности будут намерено занижены в базовом образе.

Создание виртуальной машины VirtualBox

Здесь все просто - необходимо создать виртуальную машину, после создания машины необходимо зайти в настройки, отключить (мне эти опции не нужны включенными):

  • Отключить USB
  • Отключить Audio
  • Отключить Floppy

Далее:

  • Подключить установочный iso образ
  • Настроить Port forwarding в разделе Network

vagrant custom box

Имя - ssh, протокол - TCP, хост - 127.0.0.1, порт хоста - 2222, порт гостя - 22

vagrant custom box2

После чего установить дистрибутив.

Базовая настройка CentOS для Vagrant

После установки необходимо создать пользователя vagrant с паролем vagrant:

useradd vagrant
passwd vagrant

Повысить привилегии пользователя в системе, это необходимо для дальнейшего использования sudo:

usermod -aG wheel vagrant

Обновить систему:

yum update -y

Установить дополнительный софт:

yum install epel-release nano yum-utils wget curl net-tools  -y

Настройка sudoers

Отредактировать sudoers файл: 

nano /etc/sudoers

Добавить, изменить некоторые параметры к текущему виду, изменить параметр Defaults !requiretty на:

Defaults   !requiretty

 Добавить к:

Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

 Параметр:

Defaults    env_keep += "SSH_AUTH_SOCK"

 Изменить параметры группы wheel:

%wheel  ALL=(ALL) NOPASSWD: ALL

 Настройка sshd

Открыть файл:

/etc/ssh/sshd_config

Изменить параметр AuthorizedKeysFile на:

AuthorizedKeysFile  %h/.ssh/authorized_keys

 Раскомментировать и выставить No у параметра UseDNS:

UseDNS no

 Перезапустить sshd:

systemctl restart sshd.service

 Изменение параметров grub

Эта опция служит лишь бля более более быстрой загрузки виртуальной машины:

nano /etc/default/grub

 Изменить параметр GRUB_TIMEOUT на 1, обновить grub конфигурацию:

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

Перезагрузиться:

systemctl reboot

 Установка vagrant ssh ключей

После загрузки машины, войти под учетной записью vagrant, создать каталог:

mkdir .ssh && chmod 0700 .ssh/ && cd .ssh

Загрузить vagrant ключ с офф репозитория:

wget --no-check-certificate https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub -O authorized_keys

Задать правильные разрешения:

chmod 0600 authorized_keys

Установка в гостя VirtualBox Guest Additions

Выставить параметры удаления для старых ядер:

sudo package-cleanup --oldkernels --count=2

Установить необходимый софт:

sudo yum install -y kernel-devel kernel-headers dkms gcc gcc-c++ git bzip2 make kernel-devel-$(uname -r)

Перезагрузиться:

sudo systemctl reboot

Подключить образ в меню VirtualBox - Devices - Insert Guest Additions CD image... Далее необходимо создать папку монтирования, примонтировать в нее cdrom:

sudo mkdir /mnt/cdrom && sudo mount /dev/cdrom /mnt/cdrom && cd /mnt/cdrom

 Убедиться, что в данном каталоге есть файлы (можно использовать команду ls), запустить установку VirtualBox дополнений:

sudo ./VBoxLinuxAdditions.run

 После установки отмонтировать cdrom:

sudo umount /mnt/cdrom

 Перезагрузиться, проверить загружаемость vbox модулей ядра:

sudo lsmod | grep vbox

 Сжатие образа VirtualBox

sudo dd if=/dev/zero of=/EMPTY bs=1M

Затем:

sudo rm -f /EMPTY

Образ готов, можно выключать машину:

sudo systemctl poweroff

Создание Vagrant бокса

Создадим папку проекта:

mkdir vagrant-box && cd vagrant-box

Проверим текущие боксы: 

vagrant box list

 Создаем новый бокс используя Vagrant package:

vagrant package --base CentOS-Vagrant-Template

 где CentOS-Vagrant-Template, это имя виртуальной машины созданной на первом этапе данной статьи

Далее добавляем образ в боксы, как centos7-custom:

vagrant box add centos7-custom package.box

 Снова проверяем текущие боксы, убеждаемся, что centos7-custom добавлен в список:

vagrant box list

Тестирование

Создадим папку для тестов:

mkdir centos-custom-test && cd centos-custom-test

 Инициализируем новый бокс:

vagrant init centos7-custom

Добавить в самое начало файла Vagrantfile 

nano Vagrantfile

Параметр:

ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox' 

Запуск:

vagrant up

Коннект по ssh:

vagrant ssh

Проверим доступность локального конфига Vagrant:

cat /vagrant/Vagrantfile

Итог

Теперь на руках свой собственный образ, на базе которого можно создавать тестовые среды. Done!

Доп. ссылки

Добавить комментарий


Защитный код
Обновить

Сейчас 164 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз