Поиск по сайту:

Учебное пособие по Vagrant. Начало работы с Vagrant в Linux

В этом руководстве по Vagrant мы узнаем о Vagrant, vagrant box, vagrantfile, инструментах обеспечения, о том, как установить vagrant в операционных системах Linux и, наконец, изучим несколько основных принципов. бродячие команды для создания виртуальных машин и управления ими из командной строки.

1. Введение в Vagrant

Vagrant — это программное обеспечение с открытым исходным кодом для создания и поддержки виртуальных сред разработки программного обеспечения. Он обеспечивает чистую, простую в настройке, воспроизводимую и переносимую среду разработки. Другими словами, Vagrant позволяет нам легко и быстро развернуть универсальную среду разработки программного обеспечения, которую можно использовать где угодно. Vagrant просто устраняет оправдание «работает на моей машине». Потому что все работают в одной и той же среде с одинаковым набором конфигураций. Неважно, какую ОС они используют.

Vagrant часто используется для настройки идентичной рабочей среды для совместной работы разработчиков над общим проектом. Он изолирует все необходимые зависимости и их параметры конфигурации в единой одноразовой среде. Когда другие разработчики создадут среду разработки с тем же файлом конфигурации, они получат ту же среду с теми же настройками.

Vagrant — кроссплатформенное приложение, написанное на языке Ruby. Он поддерживает GNU/Linux, Mac OS и Microsoft Windows. Он разработан Hashicorp и выпущен под лицензией MIT.

1.1. Бродячие коробки

«Коробка» — это формат и расширение для сред Vagrant. Бродячие коробки — это всего лишь базовые изображения. Это может быть образ Virtualbox, образ VMware или образ облачного провайдера, например Amazon Machine Image (AMI). Мы можем скопировать бродячие ящики в любые другие системы и установить точную копию текущей разработки.

В общедоступном репозитории Vagrant Cloud доступно множество предварительно настроенных модулей Vagrant. Если вы не хотите использовать предварительно настроенные коробки, просто создайте их по своему вкусу и распространите их среди всех через этот репозиторий.

1.2. Vagrantfile

Требования к операционной системе и программному обеспечению определяются в файле конфигурации с именем «vagrantfile». Этот файл распространяется вместе с коробками Vagrant. Когда вы инициализируете виртуальную машину с помощью Vagrant, она прочитает этот файл и соответствующим образом настроит вашу среду разработки. Итак, фактическая цель vagrantfile — описать тип виртуальной машины, а также способы настройки и подготовки виртуальных машин.

Следующие детали определены в типичном бродячем файле:

  • Версия операционной системы Убунту бионическая.
  • Включить/выключить автоматическую проверку обновлений ящика.
  • Конфигурация сети;

    • Перенаправление порта,
    • настроить частную сеть (доступ к машине только для хоста),
    • настроить общедоступную сеть (мостовую сеть).
  • Поделитесь папками с гостевой виртуальной машиной.
  • Установите предпочтительного провайдера. виртуальный бокс, квм.
  • Определите общий объем памяти для виртуальной машины.
  • Включите подготовку с помощью сценария оболочки или инструментов управления конфигурацией, таких как Ansible.

1.3. Инструменты подготовки

Vagrant не является отдельной платформой виртуализации, такой как KVM или Virtualbox. Это всего лишь оболочка и интерфейс, которые находятся между программным обеспечением виртуализации и виртуальной машиной. Vagrant использует различных поставщиков услуг и инструменты обеспечения для создания сред разработки и управления ими.

Виртуальные машины созданы на основе популярных приложений виртуализации, таких как VirtualBox, KVM, Docker, VMware и т. д., а также поставщиков облачных услуг, таких как AWS, Azure, GCE и многих других. Полный список поддерживаемых поставщиков можно просмотреть здесь. Vagrant поставляется «из коробки» с поддержкой VirtualBox, Hyper-V и Docker. VirtualBox является поставщиком по умолчанию для Vagrant.

После создания виртуальной машины мы можем установить на нее программное обеспечение, используя простые сценарии оболочки и стандартные инструменты управления конфигурацией, такие как Ansible, CFEngine, Chef, Docker, Podman, Puppet и Salt и т. д. Пользователи также могут настроить конфигурацию виртуальные среды в соответствии с их требованиями с использованием инструментов подготовки.

Короче говоря, поставщики (например, VirtualBox, AWS) используются для создания виртуальной среды, а поставщики (например, Ansible, Puppet) используются для настройки виртуальных сред.

2. Установите Vagrant в Linux

Установка Vagrant невероятно проста и понятна. Просто загрузите последнюю версию со страницы загрузки Vagrant и установите ее, используя стандартную процедуру для вашей операционной системы. Чтобы узнать, как установить Vagrant на различных платформах Linux, перейдите по следующей ссылке.

  • Как установить Vagrant в Linux

3. Учебное пособие по Vagrant. Основные команды Vagrant для создания виртуальных машин и управления ими.

Здесь я привел примеры только основных команд Vagrant, которые нам необходимы для настройки и управления виртуализированной разработкой. Чтобы узнать все об использовании Vagrant, обратитесь к официальной документации, приведенной в конце.

3.1. Создать каталог проекта Vagrant

Сначала нам нужно создать каталог проекта.

Я собираюсь создать каталог под названием myvagrants для своей виртуальной среды:

mkdir myvagrants

Перейдите в этот каталог для создания и хранения виртуальных машин:

cd myvagrants

3.2. Инициализировать среду Vagrant

Инициализируйте среду Vagrant, используя следующую команду:

vagrant init hashicorp/bionic64

Пример вывода:

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

Приведенная выше команда инициализирует текущий каталог в качестве среды Vagrant по умолчанию и создает базовый файл Vagrantfile.

Вы можете просмотреть содержимое вновь созданного vagrantfile с помощью команды cat и узнать подробности виртуальной машины, которую вы собираетесь создать:

cat Vagrantfile | less

Когда вы запустите виртуальную машину на последующих шагах, она загрузит бионическую коробку Ubuntu, опубликованную HashiCorp. Команда Vagrant также рекомендует использовать коробки Bento. Они имеют открытый исходный код и созданы для популярных провайдеров, таких как Virtualbox, VMWare и Parallels. HashiCorp и Bento — единственные два официально рекомендованных бокс-сета.

3.3. Запустить виртуальную машину

Теперь создайте и запустите виртуальную машину в соответствии с vagrantfile (который мы создали на предыдущем этапе), используя команду:

vagrant up

Пример вывода:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'hashicorp/bionic64' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'hashicorp/bionic64'
    default: URL: https://vagrantcloud.com/hashicorp/bionic64
==> default: Adding box 'hashicorp/bionic64' (v1.0.282) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/hashicorp/boxes/bionic64/versions/1.0.282/providers/virtualbox.box
Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> default: Successfully added box 'hashicorp/bionic64' (v1.0.282) for 'virtualbox'!
==> default: Importing base box 'hashicorp/bionic64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date...
==> default: Setting the name of the VM: myvagrants_default_1597837509450_67666
Vagrant is currently configured to create VirtualBox synced folders with
the `SharedFoldersEnableSymlinksCreate` option enabled. If the Vagrant
guest is not trusted, you may want to disable this option. For more
information on this option, please refer to the VirtualBox manual:

  https://www.virtualbox.org/manual/ch04.html#sharedfolders

This option can be disabled globally with an environment variable:

  VAGRANT_DISABLE_VBOXSYMLINKCREATE=1

or on a per folder basis within the Vagrantfile:

  config.vm.synced_folder '/host/path', '/guest/path', SharedFoldersEnableSymlinksCreate: false
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 6.0.10
    default: VirtualBox Version: 6.1
==> default: Mounting shared folders...
    default: /vagrant => /home/sk/myvagrants

Приведенная выше команда загрузит бионический ящик Ubuntu из облака Vagrant, создаст новую виртуальную машину с именем "myvagrants_default_1597837509450_67666", добавит ее в Virtualbox и автоматически запустит виртуальную машину.

Вы не увидите никаких уведомлений, даже если виртуальная машина работает. Чтобы проверить, работает ли виртуальная машина, откройте приложение виртуализации (например, VirtualBox или Virt-manager) и проверьте, работает ли виртуальная машина или нет.

Поскольку Vagrant использует Virtualbox в качестве поставщика по умолчанию, я могу видеть работающую виртуальную машину из диспетчера виртуальных боксов.

Бродячая коробка Ubuntu, работающая в Virtualbox

Как видите, бионическая виртуальная машина Ubuntu работает в Virtualbox.

Если вы используете другого провайдера, например Вирт-менеджер, откройте его и проверьте, работает ли машина Vagrant.

Бродячий ящик Debian, работающий в Вирт-менеджере

3.4. Доступ к виртуальным машинам

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

Чтобы подключиться по SSH к работающему ящику Vagrant с помощью команды, выполните:

vagrant ssh

Пример вывода:

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Wed Aug 24 11:56:42 UTC 2020

  System load:  0.08              Processes:           88
  Usage of /:   2.5% of 61.80GB   Users logged in:     0
  Memory usage: 11%               IP address for eth0: 10.0.2.15
  Swap usage:   0%

 * Are you ready for Kubernetes 1.19? It's nearly here! Try RC3 with
   sudo snap install microk8s --channel=1.19/candidate --classic

   https://microk8s.io/ has docs and details.

0 packages can be updated.
0 updates are security updates.


vagrant@vagrant:~$ 

3.5. Синхронизировать локальные и гостевые файлы

Vagrant поддерживает синхронизацию файлов «из коробки». По умолчанию Vagrant предоставляет доступ к каталогу вашего проекта (тому, который содержит Vagrantfile. В моем случае это ~/myvagrants.) для /vagrant каталог на вашей гостевой виртуальной машине.

Вы можете проверить это, перечислив содержимое каталога /vagrant на вашей виртуальной машине:

vagrant@vagrant:~$ ls /vagrant/
Vagrantfile

Обратите внимание, что Vagrantfile, который вы видите внутри виртуальной машины, на самом деле является тем же Vagrantfile, который находится на вашем реальном хост-компьютере.

Чтобы проверить, работает ли синхронизация, создайте образец файла в каталоге /vagrant на гостевой машине:

vagrant@vagrant:~$ touch /vagrant/test.txt

Выйдите из SSH-сессии вашей виртуальной машины:

vagrant@vagrant:~$ logout

Теперь проверьте локальный каталог проекта в вашей хост-системе. Вы увидите, что тот же файл создается и на хост-компьютере.

sk@ostechnix:~/myvagrants$ ls
test.txt Vagrantfile

3.6. Отображение статуса виртуальных машин

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

vagrant status

Пример вывода:

Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

Как вы видите выше, у меня есть только одна виртуальная машина, и она сейчас работает.

Если виртуальная машина выключена, вы получите следующий вывод:

Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`

3.7. Отображение статуса всех виртуальных сред

Мы можем отобразить информацию обо всех известных виртуальных средах в нашей системе, используя следующую команду:

vagrant global-status

Пример вывода:

id       name    provider   state    directory                           
-------------------------------------------------------------------------
2086482  default virtualbox poweroff /home/sk/myvagrants                 
 
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

Приведенная выше команда выведет идентификатор виртуальной машины, имя, поставщика, состояние виртуальной машины и каталог виртуальной среды.

Иногда вывод может быть кэширован и может быть неправильным. Итак, выполните следующую команду, чтобы удалить недопустимые записи и получить актуальный статус виртуальной среды:

vagrant global-status --prune

3.8. Приостановить виртуальные машины

Чтобы приостановить работающую виртуальную машину, выполните:

vagrant suspend

Пример вывода:

==> default: Saving VM state and suspending execution…

3.9. Возобновить виртуальные машины

Чтобы возобновить приостановленную виртуальную машину в текущей виртуальной среде, выполните:

vagrant resume

Пример вывода:

==> default: Resuming suspended VM...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

3.10. Перезагрузите виртуальные машины.

Чтобы перезапустить работающую виртуальную машину, выполните:

vagrant reload

Эта команда корректно завершит работу виртуальной машины и запустит ее снова.

3.11. Остановить/завершить работу виртуальных машин

Чтобы остановить или выключить работающую виртуальную машину, выполните:

vagrant halt

3.12. Удалить виртуальные машины

Чтобы остановить и удалить все следы виртуальной машины, запустите:

vagrant destroy

Введите y и нажмите Enter, чтобы удалить виртуальную машину.

Если вы хотите удалить виртуальную машину без какого-либо подтверждения, запустите:

vagrant destroy -f

3.13. Сбросить виртуальные машины

Иногда вам может потребоваться вернуть виртуальную машину в исходное состояние, не удаляя ее. Это может быть полезно для развертывания чистой виртуальной среды без необходимости снова и снова загружать бродячую коробку.

Чтобы вернуть виртуальную машину в исходное состояние, просто выполните:

vagrant destroy
vagrant up

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

Для получения более подробной информации перейдите по следующей ссылке:

  • Как восстановить исходное состояние виртуальной машины Vagrant

3.14. Запускайте команды Vagrant из любого каталога

Обычно мы запускаем, останавливаем, перезагружаем и удаляем Vagrant-машину из каталога ее проекта, верно? Да! Однако мы можем запускать команды Vagrant из любого каталога, используя идентификатор машины Vagrant.

Чтобы узнать идентификатор машины Vagrant, выполните следующую команду:

vagrant global-status

Пример вывода:

id       name    provider state   directory                           
----------------------------------------------------------------------
ddc1a10  default libvirt shutoff /home/sk/Vagrant/Ubunt4         
f4904ad  default libvirt shutoff /home/sk/Vagrant/Archlinux          
831f9c0  default libvirt shutoff /home/sk/Vagrant/Gentoo             
3587422  default libvirt shutoff /home/sk/Vagrant/Rhel8              
b2279ad  default libvirt shutoff /home/sk/Vagrant/Almalinux8         
 
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date (use "vagrant global-status --prune" to prune invalid
entries). To interact with any of the machines, you can go to that
directory and run Vagrant, or you can use the ID directly with
Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"

Как вы видите в приведенном выше выводе, команда vagrant global-status показывает сведения обо всех известных виртуальных средах в моей системе. В первом столбце приведенного выше вывода показан идентификатор каждой машины Vagrant.

Вы можете использовать идентификатор напрямую с командами Vagrant из любого каталога. Например, чтобы запустить машину Vagrant из любого каталога, мы можем просто использовать:

vagrant up b2279ad

Это запустит бродячую машину с идентификатором b2279ad.

Запускайте команды Vagrant из любого каталога

Точно так же мы можем использовать и другие команды Vagrant.

vagrant status b2279ad
vagrant ssh b2279ad
vagrant halt b2279ad
vagrant destroy b2279ad

3.15. Получение списка ящиков Vagrant

Чтобы просмотреть все доступные коробки, установленные вместе с Vagrant, запустите:

vagrant box list

Пример вывода:

hashicorp/bionic64 (virtualbox, 1.0.282)

Если вы хотите отобразить некоторые дополнительные сведения о ящике, такие как имя автора, веб-сайт, репозиторий, описание и т. д., используйте флаг -i:

vagrant box list -i

Пример вывода:

generic/alpine38    (virtualbox, 3.1.16)
  - Author: Ladar Levison
  - Website: https://roboxes.org/
  - Artifacts: https://vagrantcloud.com/generic/
  - Repository: https://github.com/lavabit/robox/
  - Description: Basic virtual machine images, for a variety of operating systems/hypervisors, and ready to serve as base bxoes.

3.16. Проверьте, не устарел ли ящик Vagrant

Чтобы проверить, не устарел ли ящик, который вы используете в своей бродячей среде, перейдите в среду Vagrant, то есть в каталог проекта,

cd myvagrants/

и запустите:

$ vagrant box outdated
Checking if box 'hashicorp/bionic64' version '1.0.282' is up to date…

3.17. Обновить коробки Vagrant

Если есть устаревшие ящики, вы можете обновить их, как показано ниже:

vagrant box update

Пример вывода:

==> default: Checking for updates to 'hashicorp/bionic64'
default: Latest installed version: 1.0.282
default: Version constraints:
default: Provider: virtualbox
==> default: Box 'hashicorp/bionic64' (v1.0.282) is running the latest version.

3.18. Скачать Vagrant Boxes

Команда vagrant init инициализирует и запускает среду Vagrant, загружая соответствующий блок Vagrant, определенный в Vagrantfile.

Вы также можете вручную загрузить Vagrant box, отредактировать его vagrantfile, а затем запустить его.

Чтобы загрузить коробку Vagrant, запустите:

vagrant box add bento/debian-10.5

Приведенная выше команда загрузит коробку версии Debian 10.5, опубликованную Bento. Вам будет предложено выбрать провайдера (например, virtualbox или vmware), которого вы сейчас используете. Просто выберите один и нажмите ENTER, чтобы загрузить коробку.

Пример вывода:

==> box: Loading metadata for box 'bento/debian-10.5'
    box: URL: https://vagrantcloud.com/bento/debian-10.5
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop

Enter your choice: 2
==> box: Adding box 'bento/debian-10.5' (v202008.16.0) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/bento/boxes/debian-10.5/versions/202008.16.0/providers/virtualbox.box
Download redirected to host: vagrantcloud-files-production.s3.amazonaws.com
==> box: Successfully added box 'bento/debian-10.5' (v202008.16.0) for 'virtualbox'

Вы можете убедиться в этом, перечислив доступные поля:

vagrant box list

Пример вывода:

bento/debian-10.5 (virtualbox, 202008.16.0)
hashicorp/bionic64 (virtualbox, 1.0.282)

Все загруженные ящики Vagrant будут доступны в каталоге ~/.vagrant.d/boxes в вашей хост-системе.

3.19. Посмотреть размеры коробок Vagrant

Как указано в предыдущем разделе, загруженные ящики Vagrant хранятся в каталоге ~/.vagrant.d/boxes.

Посмотреть список всех загруженных коробок в этом каталоге можно командой:

$ ls ~/.vagrant.d/boxes
almalinux-VAGRANTSLASH-8          generic-VAGRANTSLASH-debian10
archlinux-VAGRANTSLASH-archlinux  generic-VAGRANTSLASH-gentoo
centos-VAGRANTSLASH-8             generic-VAGRANTSLASH-rhel8

Чтобы узнать размер отдельных блоков Vagrant, используйте команду du с флагом -h, как показано ниже:

589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453/libvirt
589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux/20210601.24453
589M	/home/sk/.vagrant.d/boxes/archlinux-VAGRANTSLASH-archlinux
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2/libvirt
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8/3.3.2
1.1G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-rhel8
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24/libvirt
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo/3.2.24
1.6G	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-gentoo
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0/libvirt
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8/2011.0
1.6G	/home/sk/.vagrant.d/boxes/centos-VAGRANTSLASH-8
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4/libvirt
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10/3.3.4
998M	/home/sk/.vagrant.d/boxes/generic-VAGRANTSLASH-debian10
628M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724/libvirt
628M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8/8.4.20210724
629M	/home/sk/.vagrant.d/boxes/almalinux-VAGRANTSLASH-8
6.4G	/home/sk/.vagrant.d/boxes

Чтобы просмотреть общее суммарное использование, запустите:

$ du -sh ~/.vagrant.d/boxes
6.4G	/home/sk/.vagrant.d/boxes

3.20. Добавить загруженный файл .box в бродягу

Многие дистрибутивы Linux распространяются через предварительно настроенные коробки Vagrant. Таким образом, вы можете быстро получить бродячую коробку и запустить ее с помощью соответствующего приложения виртуализации. Для получения более подробной информации обратитесь к следующему руководству:

  • Как добавить загруженный файл .box в Vagrant в Linux

3.21. Создайте виртуальную машину с помощью Vagrant box.

Чтобы создать новую виртуальную машину с только что загруженным блоком, перейдите в каталог вашего проекта и инициализируйте бродячую среду с помощью команды:

vagrant init

Внимание: удалите существующий Vagrantfile перед инициализацией новой бродячей среды.

Это создаст новый Vagrantfile в текущем каталоге.

Отредактируйте файл Vagrant, обновите сведения о виртуальной машине и замените следующую строку:

Vagrant.configure("2") do |config|
[...]
config.vm.box = "base"
[...]

со следующим:

config.vm.box = "bento/debian-10.5"

Редактировать бродячий файл

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

config.vm.box = "bento/debian-10.5"
config.vm.box_version = "1.0"

Вы также можете указать URL-адрес загрузки:

config.vm.box = "bento/debian-10.5"
config.vm.box_version = "1.0"
config.vm.box_url = "https://app.vagrantup.com/bento/boxes/debian-10.5/"

Теперь создайте и запустите виртуальную машину на основе этого Vagrantfile с помощью команды:

vagrant up

Альтернативно, вы можете напрямую указать имя ящика при инициализации среды Vagrant. Это может быть полезно, если у вас более одного бродячего ящика.

Сначала перечислите доступные бродячие ящики с помощью команды:

vagrant box list 

Пример вывода:

Fedora33            (libvirt, 0)
archlinux/archlinux (virtualbox, 20201201.10292)
fedora33            (virtualbox, 0)
generic/alpine38    (virtualbox, 3.1.16)
oraclelinux/7       (virtualbox, 7.9.184)
oraclelinux/8       (libvirt, 8.3.183)

Допустим, вы хотите создать виртуальную машину из коробки с именем «generic/alpine38». Для этого просто запустите:

vagrant init generic/alpine38

Эта команда создаст новый Vagrantfile и инициализирует бродячую среду с заданной конфигурацией ящика. Нет необходимости вручную редактировать Vagrantfile и обновлять сведения о ящике.

Далее запустите виртуальную машину командой:

vagrant up

3.22. Используйте Vagrant с поставщиком KVM Libvirt

Как я уже говорил, Vagrant по умолчанию использует Virtualbox для запуска виртуальных машин. Также можно указать Vagrant использовать другого поставщика, например, Libvirt KVM, для запуска виртуальных машин с помощью плагина vagrant-libvirt. Этот плагин добавляет поставщика Libvirt в Vagrant и позволяет Vagrant контролировать и снабжать компьютеры через Libvirt. Чтобы узнать, как использовать libvirt в качестве поставщика Vagrant, обратитесь к следующему руководству:

  • Как использовать Vagrant с поставщиком KVM Libvirt

3.23. Настройка сети в Vagrant

Чтобы обеспечить доступ к сети между гостевыми машинами и хост-системой, Vagrant предлагает следующие три варианта:

  1. Перенаправление порта
  2. Частная сеть (сеть только для хоста)
  3. Публичная сеть (мостовая сеть)

Каждый вариант имеет свои плюсы и минусы. Вы можете настроить любой один или все параметры сети Vagrant, как описано в следующем руководстве:

  • Как настроить сеть в Vagrant

3.24. Найти IP-адрес Vagrant-машины из хост-системы

Чтобы найти IP-адрес Vagrant-машины, мы обычно подключаемся к ней по SSH и находим ее IP-адрес с помощью команд ip или ifconfig. Мы также можем напрямую получить IP-адрес работающей машины Vagrant с хоста, как описано в следующей ссылке:

  • Как узнать IP-адрес Vagrant машины с хоста

3.25. Увеличение памяти и процессора на машине Vagrant

Возникли проблемы с производительностью вашего компьютера Vagrant? Вероятно, это из-за нехватки памяти или процессора. Просто добавьте больше оперативной памяти и ядра ЦП на машину Vagrant, чтобы повысить ее производительность, как показано по следующей ссылке.

  • Как увеличить память и процессор на машине Vagrant

3.26. Удалите устаревшие коробки Vagrant.

Возможно, вы загрузили несколько версий коробок Vagrant, и некоторые из них могут сильно устареть! Если они больше не нужны, вы можете смело удалить старые версии установленных ящиков Vagrant, как описано по следующей ссылке.

  • Как удалить устаревшие Vagrant Box в Linux

3.27. Удалить ящики Vagrant навсегда

Чтобы удалить бродячий ящик, например hashicorp/bionic64, выполните:

vagrant box remove hashicorp/bionic64

Введите y и нажмите ENTER, чтобы подтвердить удаление:

Box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:

default (ID: 20864823c72f45568d251070b5ce2661)

Are you sure you want to remove this box? [y/N] y
Removing box 'hashicorp/bionic64' (v1.0.282) with provider 'virtualbox'…

Если вы не знаете имя ящика, просто запустите следующую команду, чтобы просмотреть все установленные ящики:

vagrant box list

На этом этапе вы должны изучить основы использования Vagrant. Vagrant — обширная тема, и я постараюсь охватить как можно больше в наших следующих статьях. Следите за обновлениями!

4. Устранение бродячих неполадок

В этом разделе рассматриваются некоторые распространенные проблемы Vagrant.

4.1. Vagrant не удалось инициализировать на очень ранней стадии

Ваша машина Vagrant не запустилась? Не беспокойся! Это одна из распространенных проблем бродяг. Это может быть связано с устаревшими плагинами или с тем, что каталог Vagrant HOME переместился в другое место. Чтобы устранить эту проблему, обратитесь к следующему руководству:

  • Как исправить ошибку «Vagrant не удалось инициализировать на очень ранней стадии» в Linux

4.2. Невозможно получить доступ к файлу хранилища, в разрешении отказано. Ошибка в KVM Libvirt.

В некоторых случаях вы можете не запустить машину Vagrant и в конечном итоге получить ошибку, подобную этой: Не удалось запустить домен. Ошибка «Archlinux_default»: невозможно получить доступ к файлу хранилища «/home/sk/.local/share/libvirt/images». /Archlinux_default.img' (как uid:107, gid:107): разрешение отклонено.

Эта ошибка обычно возникает, когда у пользователя qemu нет разрешения на чтение каталога хранилища Libvirt. Чтобы устранить эту проблему, обратитесь к следующему руководству:

  • [Решено] Невозможно получить доступ к файлу хранилища, в разрешении отказано. Ошибка в KVM Libvirt

5. Вывод

В этом подробном руководстве мы узнали, что такое Vagrant и такие термины, как vagrant box, vagrantfile и инструменты подготовки. Мы также узнали, как установить vagrant в операционных системах Linux, и, наконец, обсудили несколько основных команд vagrant для создания виртуальных машин и управления ими из командной строки в Linux.

Если вы DevOps-инженер, знание того, как использовать Vagrant, будет очень полезно. Vagrant — один из важных инструментов, которые должны быть в вашей системе.

Ресурсы:

  • Сайт Vagrant
  • Бродячая документация

Статьи по данной тематике