Syntax highlighting of
c0f3a80 ~( devops/vagrant)
= Vagrant =
<<TableOfContents()>>
== Refs ==
https://www.vagrantup.com
[[https://www.vagrantup.com/docs/vagrantfile|Vagrantfile refs|class=" moin-https"]]
== Install ==
Go to [[https://www.vagrantup.com/downloads.html|downdload page|class=" moin-https"]]
{{{
sudo apt install virtualbox
sudo dpkg -i vagrant_X_Y_Z.deb
}}}
== Images ==
[[https://app.vagrantup.com/boxes/search|search|class=" moin-https"]]
[[https://app.vagrantup.com/ubuntu|ubuntu all|class=" moin-https"]]
[[https://app.vagrantup.com/kalilinux/boxes/rolling|kalilinux/rolling|class=" moin-https"]] | [[https://app.vagrantup.com/kalilinux/boxes/rolling-light|kalilinux/rolling-light|class=" moin-https"]]
== plugins ==
https://github.com/devopsgroup-io/vagrant-hostmanager
== Commands ==
{{{
# --- список образов
vagrant box list
# --- состояние глабального окружения
vagrant global-status
# --- состояние vagrant в текущем проекте
vagrant status
# --- запуск VM
# при необходимости скачивается образ системы и создается VM
vagrant up
# --- остановка окружения
# VM переводится в состояние poweroff
vagrant halt
# --- приостановка окружения
# VM "ставится на паузу", занимает доп. пространство HDD
vagrant suspend
# --- возобновление работы приостановленной VM
vagrant resume
# --- остановка и удаление VM, образ системы не удаляется
vagrant destroy
# --- перезапуск VM
vagrant reload
# --- доступ к окружению
vagrant ssh
# или
ssh -p2222 vagrant@127.0.0.1
# username: vagrant
# password: vagrant
# --- создание образа для текущего окружения
# box-файл создается в текущей директории
vagrant package --output my-package-name.box
# --- добавление образа в общую директорию
# box-файл скопируется в $VAGRANT_HOME/.vagrant.d/boxes/my-shared-package-name.box
vagrant box add my-shared-package-name my-package-name.box
}}}
== Recipes ==
=== HostOnly ===
Для включения режима сети HostOnly запускаем VirtualBox, далее Файл -> Менеджер сетей хоста -> Создать (если нет). Запоминаем имя сети
В Vagrantfile указываем:
{{{
config.vm.network "private_network", type: "dhcp", name: "vboxnet0"
}}}
где vboxname - имя из сети.
После загрузки командой смотрим IP, например
{{{
hostname -I
}}}
=== ssh vagrant ===
Конфигурация ssh клиента, при использовании которой можно подключаться через `ssh vagrant` и информация в ''known_hosts'' не заносится. Полезно, при пересоздании ВМ.
Используется ключ, сгенерированный при создании машины.
{{{
# --- ~/.ssh/config
HOST vagrant
HostName 127.0.0.1
Port 2222
StrictHostKeyChecking no
PasswordAuthentication no
UserKnownHostsFile /dev/null
IdentitiesOnly yes
IdentityFile /home/username/path/to/project/.vagrant/machines/default/virtualbox/private_key
LogLevel FATAL
User vagrant
}}}
Альтернативно, можно использовать свой собственный ключ, который копируется в ВМ. Из конфигурации выше необходимо убрать опцию `IdentifyFile` и в Vagrantfile добавить:
{{{
ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
config.vm.provision 'shell', inline: "echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys", privileged: false
}}}
== troubleshooting ==
=== VT-x is not available ===
Для запуска virtualbox через vagrant требуется включить в биосе "аппаратную виртуализацию".
=== ERROR: could not insert 'vboxdrv': Operation not permitted ===
https://crazytechgo.com/modprobe-error-could-not-insert-vboxdrv-operation-not-permitted/#:~:text=The%20issue%20is%20that%20the,vboxdrv'%3A%20Operation%20not%20permitted%20.
При установке virtualbox отображается ошибка. Т.к. процесс установки изменен, требуются дополнительные действия, связанные с MOK.
Во время установки вводится пароль. После установки необходимо перезагрузить систему и на синем экране выбрать опцию Enroll MOK -> Continue -> Yes -> Password: -> Reboot
После перезагрузки проверяем состояние сервиса
{{{
sudo systemctl status virtualbox
}}}