Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


Информация
titleДанная статья применима к:


Введение

В статье рассматривается пример создание контейнера Vagrant на базе образа подготовленного в системе виртуализации QEMU/KVM в Astra Linux. Предполагается, что имеется машина с установленной и настроенной системой виртуализации, на которой образ создается, настраивается и конвертируется в файл для передачи в Vagrant.

Подготовка образа виртуальной машины

libvirt

Для создания исходного образа следует использовать обычные процедуры работы с системой виртуализации QEMU/KVM.

Информация
Для системы хранения (диска) создаваемого исходного образа рекомендуется использовать драйвер virtio. Этот драйвер используется в vagrant по умолчанию. Если использовать другие драйверы (SATA или SCSI), то для запуска созданного образа потребуется вручную указать использованный драйвер.


Для подготовки созданного образа необходимо в работе с Vagrant выполнить следующие действия в операционной системе образа:

  1. Создать пользователя с именем vagrant, имеющего права администратора (для Astra Linux Special Edition с включенным МРД - администратора с высоким уровнем целостности). Это можно сделать при установке ОС на виртуальную машину (при этом пользователю должен быть установлен пароль vagrant), или выполнив на ранее созданной машине команды:
    1. Создать пользователя vagrant и его домашний каталог:

      Command
      sudo useradd -m vagrant

      Установить пользователю vagrant пароль vagrant:

      Command
      sudo passwd vagrant
      -s /bin/bash -G astra-admin vagrant

      опции команды:
      -m - создать домашний каталог;
      -s /bin/bash - задать командную оболочку;
      -G astra-admin - включить пользователя Включить пользователя vagrant в группу astra-admin для того, чтобы этот пользователь мог использовать команду , что позволит ему выполнять команды с sudo без пароля;

    2. Установить пользователю vagrant любой пароль:

      Command
      sudo usermod -aG astra-admin vagrantpasswd vagrant

      Пароль может быть любым, так как далее настраивается подключение SSH по ключу без использования пароля.

    3. Для работы в виртуальных машинах Astra Linux Special Edition с включенным МРД МКЦ назначить пользователю vagrant высокую целостность:

      Command
      sudo pdpl-user -i 63 vagrant


  2. Включить Установить, включить и настроить службу ssh (служба может быть установлена и настроена при установке ОС):
    1. Установить пакет openssh-server:

      Command
      sudo apt install openssh-server


    2. Разрешить автоматический запуск службы:

      Command
      sudo systemctl enable ssh


    3. Загрузить и зарегистрировать стандартный ключ ssh vagrant для доступа без пароля:

      Command
      wget https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant.pub
      ssh-copy-id -f -i vagrant.pub vagrant@localhost


  3. Если предполагается использовать автоматическое монтирование каталогов средствами vagrant, то установить клиент NFS:

    Command
    sudo apt install nfs-common


  4. Если необходимо, то установить другие дополнительные пакеты.;

  5. Выключить виртуальную машину.

Создание образа для контейнера Vagrаnt

Конвертировать образы qcow2 в контейнеры vagrant можно на любой машине, при этом ни система виртуализации, ни vagrant не нужны. Для подготовки машины к созданию контейнеров:

  1. Установить пакет qemu-utils:

    Command
    sudo apt install qemu-utils


  2. Подготовить сценарий конвертации образов виртуальных машин qcow2 в контейнеры vagrant. Оригинал сценария доступен по ссылке: https://raw.githubusercontent.com/vagrant-libvirt/vagrant-libvirt/master/tools/create_box.sh, оригинальное описание применения сценария доступно по ссылке: https://github.com/vagrant-libvirt/vagrant-libvirt. Вариант сценария, использовавшийся при написании данной статьи, можно скачать по ссылке:

     

    create-box.sh. Сценарий сохранить в файле именем create-box.sh и сделать исполняемым:

    Command
    chmod +x create-box.sh
  3. Установить имя файла, содержащего образ виртуальной машины. Это можно сделать командой:
    vagrant dumpxml <имя_виртуальной_машины>  | grep qcow2
    и, при необходимости, скопировать файл с образом на машину, на которой будет выполняться конвертация.

  4. Выполнить конвертацию образа виртуальной машины в контейнер vagrant с помощью сценария. Пример команды:

    Command
    Выполнить конвертацию с помощью сценария. В простейшем виде достаточно указать имя файла с образом:
    ./create-
    bix
    box.sh <имя_файла_с_
    образом>
    Также можно использовать дополнительные параметры:
    ./create-bix.sh <имя_файла_с_образом>
    образом_виртуальной_машины> <имя_контейнера_vagrant> <имя_файла_дополнительными_параметрами>


    Информация

    При работе на машине с установленной системой виртуализации QEMU/KVM для того, чтобы найти файл с образом виртуальной машины можно использовать команду:

    Command
    virsh dumpxml <имя_виртуальной_машины> |  grep "<source file"


    При этом в файле с дополнительными параметрами (имя файла может быть произвольным, например vagrantfile.add):

    1. Обязательно должен быть указан тип виртуальной машины:

      Блок кода
      config.vm.guest = "astra"


    2. Опционально может быть указан запрет проверки наличия клиента монтирования NFS (если монтирование не используется):

      Блок кода
      config.nfs.verify_installed = false;


    3. Если не требуется копирование текущего каталога в каталог /vagrant виртуальной машины, то запретить его:

      Блок кода
      config.vm.synced_folder ".", "/vagrant", disabled: true


Подготовка хоста Vagrant

На машине, на которой будет запускаться образ контейнер vagrant, должны быть установлены:

  • пакет vagrant
,
  • ;
  • система виртуализации QEMU/KVM
и ПредупреждениеНа момент написания статьи:
В репозиториях отсутствует
  • ;
  • vagrant-плагин vagrant-libvirt (или пакет vagrant-libvirt)
. Установить все пакеты можно командами:
  • ;
  • пакет vagrant-
libvirt и vagrant
  • plugin-astra
    wget http://ftp.de.debian.org/debian/pool/main/v/vagrant-libvirt/vagrant-libvirt_0.0.45-2_all.deb
    wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-core/ruby-fog-core_2.1.0-3_all.deb
    wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-libvirt/ruby-fog-libvirt_0.6.0-1_all.deb
    wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-json/ruby-fog-json_1.2.0-1_all.deb
    wget http://ftp.de.debian.org/debian/pool/main/r/ruby-fog-xml/ruby-fog-xml_0.1.1-5_all.deb
    wget http://ftp.de.debian.org/debian/pool/main/r/ruby-libvirt/ruby-libvirt_0.7.1-1_amd64.deb
   
  • .

Для установки пакетов:

Подключить расширенный репозиторий (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования) версии не ниже 1.7.2 и установить пакеты из репозитория:  

Command
sudo apt install astra-kvm vagrant vagrant-libvirt
./*.deb
vagrant-plugin-astra

Для успешной работы с системой виртуализации включить пользователя в соответствующие группы пользователей, от имени которых должны запускаться виртуальные машины, в группы kvm, libvirt, libvirt-qemu, libvirt-admin и перезапустить пользовательскую сессию (подробнее см. Виртуализация QEMU/KVM в Astra Linux):

Command
sudo usermod -a -G kvm,libvirt,libvirt-admin,libvirt-qemu
$USER
<имя_пользователя>

Запуск контейнера Vagrant на хосте Vagrant

  1. Скопировать файл с контейнером vagrant на хост.

    Предупреждение
    Полный путь к файлу не должен содержать символов кириллицы.


  2. Создать каталог для работы и перейти в него:

    Command
    mkdir vagrant-astra
    cd vagrant-astra


  3. Инициировать окружение vagrant, указав имя файла с образом vagrant:

    Command
    vagrant init <имя_файла_с_образом_vagrant>


  4. Запустить контейнер vagrant, указав провайдера libvirt:

    Command
    vagrant up --provider libvirt


  5. Для проверки работоспособности контейнера выполнить контрольное подключение через ssh (в примере ниже при подключении выполняется команда id):

    Command
    vagrant ssh -- "id"