kbook


Project maintained by atilla777 Hosted on GitHub Pages — Theme by mattgraham
Главная страница
DevOps

Vagrant

Основные понятия

Box при их установке загружаются из облака HashiCorp’s Vagrant Cloud.

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

Имя box состоит из 2х частей – имени опубликовавшего его пользователя и непосредственно имени box

пользователь\название box

Помимо названия у box есть версия.

Установка

Для работы Vagrant требуется соответствующий гипервизор, таким образом его (например, virtualbox) требуется установить.

Установка самого Vagrant выполняется согласно официальной документации.

Создание проекта

mkdir проект
cd проект
vagrant init

Список установленных box

vagrant box list

Установить box

vagrant box add

Удалить вирутальную машину проекта из гипервизора (но оставить скаченный базовый box)

vagrant destroy

Удалить box файл не оставляя скаченный образ

vagrant remove

Подготовить папку нового проекта vagrant

mkdir проект
cd проект

Можно использовать существующую папку, например, с Ruby on Rails приложением (не выполнять mkdir).

Инициировать vagrant и использовать в качестве базы указанный box

vagrant init

Указанная выше команда, как и все команды Vagrant выполняется в папке конкретного проекта Vagrant.

Конфигурирование **Vagrantfile **

Используемый базовый box

Vagrant.configure("2") do |config|
    config.vm.box = "hashicorp/precise64"
end

Развернуть и запустить (в фоновом режиме) виртуальную машину из Vagrant проекта (согласно конфигурации, Vagrantfile) или запустить ранее созданную машину (не выполняя начальных установочных процедур)

vagrant up

После разворачивания может потребоваться обновить версии VirtualBox additions (в старом базовом box может быть устаревшая версия).

Сохранить состояние и выключить виртуальную машину

vagrant suspend

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

vagrant halt

Подключиться по SSH к запущенной виртуальной машине из проекта Vagrant

vagrant ssh

Синхронизация файлов хоста и гостевой машины

В запущенном образе папка /vagrant это папка ./vagrant в папке проекта Vagrant.

Всё что находится в этих папках синхронизируется между гостевой виртуальной машиной и хостом гипервизора.

Provisioning – автоматическая установка программ в гостевой машине

Выполнить скрипт при разворачивании виртуальной машины

config.vm.provision :shell, path: "скрипт.sh"

В данном случае скрипт размещается в папке Vagrant проекта.

Выполнить скрипты Provisioning (если необходимо, к примеру, внести изменения в скрипте сделанные уже после начального развертывания виртуальной машины)

vagrant reload --provision

Перенаправление портов виртуальной машины

config.vm.network :forwarded_port, guest: 80, host: 4567

Packer

Packer - это утилита, с помощью которой можно создавать образ виртуальной машины (vagrant box) из iso образа установщика ОС. Установка packer описанеа на официальном сайт. Через chockolatey на Windows установка выглядит так

choco install packer

Образы можно создавать под несколько типов виртуальных платформ однавременно. Параметры необходимые packer build для построения образа виртуальной машины задаются в json файле. Например

packer\templates\windows_2008_r2_new.json

Такой образ может быть использован vagrant как base box для создания виртуальной машины.

packer build шаблон

Пример (образ создается только для virtualbox)

packer build --only=virtualbox-iso packer\templates\windows_2008_r2_new.json

В результате работы указанной выше команды будет создан файл с расширением .box (по сути это архив настроек виртуальной машины, диска этой машины и параметров vagrant). Этот образ можно добавить к текущему окружения vagrant следующей командой

agrant box add packer/builds/windows_2008_r2_*_0.1.0.box --name=metasploitable3-win2k8