- Как установить и использовать Vagrant в Linux и Windows
- Для чего нужна Vagrant
- Как установить Vagrant в Linux
- Установка плагина vagrant-vbguest
- Как пользоваться Vagrant
- » Installing Vagrant
- » Running Multiple Hypervisors
- » Linux, VirtualBox, and KVM
- » Windows, VirtualBox, and Hyper-V
- Vagrant
- Содержание
- Установка vagrant + VirtualBox
- Создаём машину по-умолчанию
- Создаём собственный Vagrantfile
- vagrant, VBox и сеть
- Private network
- Public network
- Port Forwarding
- Синхронизация каталогов
- Использование команд vagrant
- Конфигурирование нескольких машин
- Использование цикла
- Описываем каждую машину отдельно
- Используем цикл и отдельное описание машин
- Vagrant provision
- Provisioning with shell
- Выполнение одной команды
- Выполнение скрипта. Пишем скрипт на shell в Vagrantfile
- Выполнение скрипта. Используем внешний файл
- Provisioning with Ansible
- Provisioning with Puppet
Как установить и использовать Vagrant в Linux и Windows
Для чего нужна Vagrant
Vagrant — это программа-ассистент по сборке и управлению виртуальными машинами. С её помощью можно автоматизировать процесс развёртывания кастомных (с пользовательскими настройками) виртуальных машин.
Суть работы Vagrant в том, что она с помощью написанных специально для этой программы конфигурационных файлов, собирает виртуальные машины, в которых уже применены определённые настройки. Авторы некоторых систем распространяют их в виде такого конфигурационного файла Vagrant и получив этот файл мы можем собрать на своём компьютере эту ОС. Мы можем использовать конфигурации по умолчанию или вносить в них изменения. В результате будут получаться ОС от автора, но с определённым тюнингом.
Как установить Vagrant в Linux
Поскольку Vagrant это всего лишь надстройка над VirtualBox, то начать нужно с установки VirtualBox.
Теперь, когда VirtualBox уже есть в вашей системе, то поищите vagrant в стандартных репозиториях вашей системы — скорее всего, он там уже есть.
Для установки в Ubuntu, Linux Mint, Debian, Kali Linux и их производные выполните команду
Для установки в Arch Linux, BlackArch и их производные выполните команду:
Как установить Vagrant в Windows
Для Vagrant в Windows также имеется графический установщик, скачайте его с официального сайта и выполните установку.
В качестве папки установки Vagrant выбирает не C:\Program Files\, а другую папку, это позволяет программе проще работать с разрешениями и правами доступа:
После установки требуется перезагрузка:
После перезагрузки откройте командную строку Windows. Это можно сделать нажав Win+x, в открывшемся окне выберите Windows PowerShell (администратор). В открывшемся окне для перехода из PowerShell в командную строку введите
В этой консоли выполните команду:
Должна появиться стандартная справка по пользованию программой:
Если возникнет ошибка, либо просто для профилактики, выполните обновление плагинов:
Установка плагина vagrant-vbguest
vagrant-vbguest — это плагин Vagrant, который автоматически устанавливает в гостевые системы VirtualBox Guest Additions — гостевые дополнения VirtualBox.
Независимо от операционной системы, плагин должен устанавливаться одинаково следующей командой:
Если в Windows у вас проблемы с установкой этого плагина, то попробуйте следующую команду:
Также в Windows файервол может запросить разрешение для выхода в сеть программой:
Плагин vagrant-vbguest запускается и используется по умолчанию всеми виртуальными машинами. Он запускается автоматически сразу после старта коробки (так в Vagrant называют виртуальные машины). Получается что он работает каждый раз при загрузке коробки, то есть при использовании команд vagrant up или vagrant reload. Он не будет работать при команде vagrant resume (или vagrant up на приостановленной коробке) чтобы не тратить время при возобновлении работы виртуальной машины.
Чтобы отключить этот плагин, в настройках виртуальных машин установите vbguest.auto_update на false.
Как пользоваться Vagrant
Vagrant собирает виртуальные машины исходя из конфигурационного файла Vagrantfile. Вы можете создавать и использовать для быстрого развёртывания свои варианты, либо устанавливать различные операционные системы подготовленные другими. Большой сборник содержится в Vagrant Cloud, там вы можете выбрать заинтересовавшую вас коробку и собрать, а затем запустить с помощью команды вида:
Например, offensive-security подготовили kali-linux-light,
тогда установка и запуск выполняются командами:
Примеры других популярных систем:
Для разных систем выделите отдельные папки, то есть запускайте приведённые выше команды в разных папках.
Vagrant умеет не только скачивать и запускать коробки, он также умеет запускать внутри них пользовательские скрипты — поэтому некоторые системы могут устанавливаться сложнее, чем показано здесь. Для них может потребоваться скачивание полного архива. Затем нужно будет перейти в папку, содержащую файл Vagrantfile и уже там запустить vagrant up.
Источник
» Installing Vagrant
Installing Vagrant is extremely easy. Head over to the Vagrant downloads page and get the appropriate installer or package for your platform. Install the package using standard procedures for your operating system.
The installer will automatically add vagrant to your system path so that it is available in terminals. If it is not found, please try logging out and logging back in to your system (this is particularly necessary sometimes for Windows).
Looking for the gem install? Vagrant 1.0.x had the option to be installed as a RubyGem. This installation method is no longer supported. If you have an old version of Vagrant installed via Rubygems, please remove it prior to installing newer versions of Vagrant.
Beware of system package managers! Some operating system distributions include a vagrant package in their upstream package repos. Please do not install Vagrant in this manner. Typically these packages are missing dependencies or include very outdated versions of Vagrant. If you install via your system’s package manager, it is very likely that you will experience issues. Please use the official installers on the downloads page.
» Running Multiple Hypervisors
Sometimes, certain hypervisors do not allow you to bring up virtual machines if more than one hypervisor is in use. If you are lucky, you might see the following error message come up when trying to bring up a virtual machine with Vagrant and VirtualBox:
Other operating systems like Windows will blue screen if you attempt to bring up a VirtualBox VM with Hyper-V enabled. Below are a couple of ways to ensure you can use Vagrant and VirtualBox if another hypervisor is present.
» Linux, VirtualBox, and KVM
The above error message is because another hypervisor (like KVM) is in use. We must blacklist these in order for VirtualBox to run correctly.
First find out the name of the hypervisor:
The one we’re interested in is kvm_intel . You might have another.
Blacklist the hypervisor (run the following as root):
Restart your machine and try running vagrant again.
» Windows, VirtualBox, and Hyper-V
If you wish to use VirtualBox on Windows, you must ensure that Hyper-V is not enabled on Windows. You can turn off the feature by running this Powershell command:
You can also disable it by going through the Windows system settings:
- Right click on the Windows button and select ‘Apps and Features’.
- Select Turn Windows Features on or off.
- Unselect Hyper-V and click OK.
You might have to reboot your machine for the changes to take effect. More information about Hyper-V can be read here.
Источник
Vagrant
Содержание
В теме описано использование vagrant с провайдером VirtualBox.
Подробное содержание доступно справа.
Установка vagrant + VirtualBox
Устанавливать будем с официального сайта, скачав подходящие deb-пакеты.
Скачиваем и устанавливаем vagrant:
Скачиваем и устанавливаем VirtualBox:
Может понадобиться пакет linux-headers:
После всех манипуляций выше должны в системе присутствовать:
Всё готово для использования.
Создаём машину по-умолчанию
Для того, чтоб создать виртуальную машину со стандартными настройками вполне достаточно выполнить две команды:
эта команда в текущей директории создат Vagrantfile (можете посмотреть его в vim любимом текстовом редакторе), который будет считывать следующей командой:
Эта команда скачает базовый образ из репозитория vagrant и на его основе создаст виртуальную машину для VirtualBox.
Маленькие прелести vagrant:
И всё, мы внутри гостя.
Создаём собственный Vagrantfile
Создание собственного файла позволяет очень гибко настроить саму машину и систему. То есть, указать количество памяти, процессор, другие опции провайдера (в данном случае VirtualBox) и можно указать, что делать в самой системе — установка приложений, конфигурация, копирование файлов.
Самый быстрый способ создать уникальный Vagrantfile — создать пример(темплейт) командой
и далее редактировать сгенерированный файл.
Вот небольшой пример Vagrantfile с одной машиной, которая содержит образ Ubuntu 14.04.
Он написан на языке Ruby. Знать язык не обязательно для работы, всё просто.
Первые две строки служебные — указываем режим работы с Vagrantfile. (указывать не обязательно, но при генерации добавляются сами)
начинает цикл, подставляя вместо «Vagrant.configure» ⇒ «config»
указываем название образа. Название образа можно выбрать отсюда (официальный репозиторий) или создать самому (немного сложнее).
По-умолчания, vagrant перед каждым запуском образа проверяет репозиторий на наличие обновлений. Это занимает какое-то время и не особо нам нужно, так как используем LTS версию.
Тут всё понятно — задаём hostname:
Следующими строками мы задаем публичный (то есть, наша виртуалка доступна по этому адресу внутри сети) адрес. Если не указать его явно, то нам его подарит DHCP .
задаёт имя машины для vagrant и VBox. Это не обязательно, но лучше это сделать, потому что удобнее обращаться к машинам по именам (см. п. 6)
И, наконец, мы говорим нашему провайдеру, что нам не нужен графический интерфейс (для VirtualBox по-умолачнию идёт значение False) и что памяти мы готовы выделить не больше 1 Гб:
Более развёрнутая информация о Vagrantfile тут
vagrant, VBox и сеть
Private network
Это удобно, если создавать виртуалку для «поиграться» или если планируется использовать виртуалку внутри сети и за NAT (например, она получит адрес от DHCP другой виртуалки, которая будет выполнять роль шлюза).
сконфигурировать можно в Vagrantfile следующим способом:
IP можно не указывать, можно сделать так:
и адрес назначится автоматически.
больше информации о приватных сетях тут
Public network
Публичная сеть позволяет добавить машину в вашу подсеть так, как будто появилась дополнительная железная машина. С публичной сетью нет необходимости пробрасывать порты — всё доступно по адресу виртуалки. Для всех машин в этой же подсети.
Создать публичную сеть можно так:
больше информации о публичных сетях тут
Port Forwarding
Как уже упоминалось выше, vagrant сам пробрасывает 22 порт гостя на 2222 порт хоста для первой машины. Для следующих машин это будет 2200, 2300 — называется эта штука auto_correct Простыми словами — если у вас где-то есть конфликт портов(пробросили на уже занятый порт), то vagrant это дело увидит и сам исправит, радостно сообщив о сделанном в консоли.
Автоматически эта опция включена только для 22 порта, для портов, которые вы задаёте вручну, нужно указать эту опцию как
Где? возле каждого порта, который вы указали (пример ниже)
Для того, чтоб принудительно открыть порты, используется следующий синтаксис:
в этом примере мы перенаправили стандартный 80 порт для веб-серверов (http) с гостя на 9999 порт хоста. Теперь, если у нас в виртуальной машине есть какой-либо веб-сервер (nginx, apache), то мы сможем попасть на него с хоста двумя способами:
Это возможно благодаря тому, что по-умолчанию vagrant привязывает проброшеный порт на все доступные в хостовой системе интерфейсы. Если вы не хотите пробрасывать порт на WAN -интерфейс, то можете конкретно указать, на какой ip адрес привязать пробощеный порт:
Если нам требуется пробросить несколько портов, то просто задаём две строки в Vagrantfile:
И второй порт тоже будет доступен на хосте.
По-умолчанию проброс идёт ТСР протокола, для того, чтоб проборосить UDP порт, это нужно явно указать:
Синхронизация каталогов
«Из коробки» vagrant синхронизирует каталог хоста с Vagrantfile в директорию /vagrant виртуальной машины.
Для того, чтоб указать дополнительный каталоги для синхронизации, нужно добавить следующую строку в Vagrantfile:
Первым указывается путь на хосте, вторым — гостевой путь. Если на хостовой машине указывать относительный путь, то корневым будет каталог с Vagrantfile.
Если абсолютный путь, то он абсолютный 🙂
Путь на гостевой машине должен быть только абсолютный. Если директорий не существует, они будут созданы рекурсивно.
Если эта поция не указана, то vagrant выберет сам подходящую.
Я рекомендую для Linux-гостей использовать rsync — этот тип не требует дополнений гостевых систем, автоматически установить rsync на всех гостей. Также, доступны дополнительные плюшки, такие как vagrant rsync и vagrant rsync-auto ( о них ниже)
машине. Имеет смысл использовать, если у вас несколько расшареных каталогов
Рассмотрим подробнее вариант rsync
Первое — этот тип работает только в одну сторону Каталоги, которые синхронизированы через rsync синхронизируются автоматически только один раз — при инициализации машины (vagrant up\vagrant reload). Принудительно синхронизировать можно двумя путями:
Отличия можно понять по названиям:
первый вариант запускается один раз (синхронизировал и всё).
Второй же работает в режиме демона и отслеживает изменения на хосте. Это удобно, так как один каталог можно шарить на несколько машин сразу, передавая изменения на всех гостей.
Для rsync есть куча опций, которые обычно не нужны. На мой взгляд, одна из самых полезных — rsync_exclude. (аналог gitignore) Опция позволяет исключить из списка синхронизации, которые не нужны. Это нужно, когда у вас есть директория, в которой содержится 1005 файлов. И вам нужно синхронизировать 1000, а 5 — не нужно. Гораздо проще исключить 5 файлов, чем добавлять 1000.
Использование команд vagrant
Пожалуй, самые необходимые команды это vagrant up, vagrant destroy, vagrant suspend, vagrant resume, vagrant ssh.
Теперь по порядку. vagrant up Эта команда смотрит в Vagrantfile и создаёт виртуальную машину согласно описанию. Если в Vagrantfile описано несколько мащин, то вы должны явно указать её имя. В противном случае будут подняты все машины. О мультимашинном Vagrantfile мы поговорим позже.
vagrant destroy Эта команда уничтожает машину полностью, найдя её описание в Vagrantfile. Точно также, как и при создании машины, вы должны указать имя машины, если их несколько.
Для того, чтоб удалить машину без подтверждения, используйте ключ -f
vagrant suspend Эта команда отправляет машину в сон (аналог VirtualBox — сохранить состояние)
Требует наличие дополнительного свободного места, так как сохраняет ОЗУ вируталки.
После этого, машину можно «воскресить» командой:
vagrant resume Как уже сказано выше, эта команда пробуждает машину из сна.
vagrant ssh
Название команды также говорящее. Этой командой очень просто подключиться к машине. Если она одна, то подключение будет сразу. Если машин несколько, то следует явно указать её имя.
Теперь еще парочку дополнительных команд, которые могут оказаться полезными.
vagrant global-status
Команда-исключение. Её можно выполнять в любой директории и она вернёт список машин, вместе с состоянием и с дирекорией, в которой размещён Vagrantfile. Пример использования:
Это удобно, если вы забыли(ну, разное бывает), в какой директории запустили vagrant. Эта команда всё покажет и рааскажет.
vagrant halt
vagrant port
показывает список проброшенных портов. Пример:
vagrant reload Эта команда перезагрузки — сначала выключает машину, потом поднимает. Удобно, если надо применить изменения в конфигурации
Более подробно о других команда можно узнать на официальном сайте
Конфигурирование нескольких машин
В одном Vagrantfile может быть столько машин, сколько нам нужно. Задать их можно двумя способами:
Очевидно, что циклом удобно поднимать машины, которые буду отличаться только названием, хостнеймом и, возможно, ip адресом (параметры, которые можно итерировать). Другие параметры системы, такие как память, процессор, синхронизированные каталоги задать нельзя. Это могут быть ноды кластера, ноды для балансировщика или если вам нужно поднять пару десятков одинаковых машин для тестировщиков или разработчиков.
При конфигурировании каждой мащины отдельно мы имеем гораздо больше возможностей, но и писать придётся больше.
Использование цикла
Первая строчки — мы создали переменную mach_quant и присвоили ей значение 3. Эта переменная и будет указывать на количество машин, которые vagrant будет поднимать.
Первый цикл конфигурирует провайдер VirtualBox, а именно задаёт:
версию дистрибутива, а проверка замедляет запуск виртуальной мащины, то это вполне логично.
Дальше уже знакомая строчка — не проверять обновления образа.
Теперь мы создаём цикл, который будет создавать машины, меняя название машины, хостнейм и ip адрес.
Идёт итерация от 1 до mach_quant (в данном случае три), номер машины подставляется в переменную і.
Значение i | Имя машины | ip адрес | Хостнейм |
---|---|---|---|
1 | node1 | 192.168.1.25 | node1 |
2 | node2 | 192.168.1.26 | node2 |
3 | node3 | 192.168.1.27 | node3 |
Работать с таким файлом можно двумя способами: в этом случае будут подняты все машины, конфиги которых присутствуют.
А в этом случае будет поднята только та машина, которая указан.
Можно еще и так — задать сразу несколько машин.
Описываем каждую машину отдельно
Вот пример Vagrantfile, в котором создаются 4 разных машины:
прописываем глобальный конфиг для всех машин:
Далее создаём машины:
Всё почти так же, как при описании одной машины.
В результате команды
у нас получится 4 машины:
Имя машины | ip адрес | Хостнейм | Память |
---|---|---|---|
dev | 192.168.1.160 | dev | 4096 |
db | 192.168.1.161 | db | 1024 |
ci | 192.168.1.162 | ci | 2048 |
lamp_node | 192.168.1.163 | lamp_node | 512 |
Все машины с Ubuntu внутри, без графического интерфейса, обновления отключены.
Как можно понять по названиям, машины имеют разные назначения: dev — машина для разработчиков ci — машина для Сontinuous Integration server (Jenkins, TeamCity, etc) db — база данных lamp_node — машина для разворачивания LAMP-приложения.
Для каждой отдельной машины можно переопределить глобальные конфигурации, например, переопределим образ в одной из машин с Ubuntu на CentOS:
Теперь подумаем, что проект, над которым работает один разработчик, в современных реалиях, маловероятен. Тогда нам необходимо несколько машин для разработчиков. Решение вопроса ниже.
Используем цикл и отдельное описание машин
Предположим, что у нас есть небольшой проект, в котором 5 разработчиков, один сервер непрерывной интеграции, две машины с базами данных(репликация и\или кластер). Добавим две ноды, на которые разворачивается приложение. И добавим машину, на которой будет крутиться балансировщик нагрузки (HAProxy, Nginx, httpd), он будет балансировать между нодами с приложениями. Итого 11 машин. Vagrantfile для всей инфраструктуры выглядит следующим образом:
По традиции, сводная таблица поднятых машин после выполнения
Имя машины | ip адрес | Хостнейм | Память |
---|---|---|---|
dev1 | 192.168.1.11 | dev1 | 4096 |
dev2 | 192.168.1.12 | dev2 | |
dev3 | 192.168.1.13 | dev3 | |
dev4 | 192.168.1.14 | dev4 | |
dev5 | 192.168.1.15 | dev5 | |
db1 | 192.168.1.51 | db1 | 1024 |
db2 | 192.168.1.52 | db2 | |
ci | 192.168.1.60 | ci | 2048 |
lamp_node1 | 192.168.1.151 | lamp_node1 | 512 |
lamp_node2 | 192.168.1.152 | lamp_node2 | |
gate | 192.168.1.2 | gate | 2048 |
Учитывая, что данный пример собран на основе предыдущих разделов, пояснять не буду — комментарии в коде дают всё необходимое.
Vagrant provision
Итак, у нас есть десяток машин. Некоторые из них одинаковы — ноды с приложением и машины со средой для разработки. В данном случае имеет смысл использовать подготовку машин. vagrant позволяет использовать несколько решений:
При чём некоторые из них, например, Chef, Puppet, Salt имеют несколько вариантов использования (мастер-агент, без мастера, запуск локально).
Автоматически provision запускается только в двух случаях:
vagrant up и vagrant reload. Если вы хотите запустить подготовку машин принудительно, то необхожимо это явно указать. Например:
Рассмотрим самый простой вариант — shell.
Provisioning with shell
В этом подразделе рассмотрим пост-конфигурацию машин с помощью shell. Парочка примеров, естественно будет под Linux, хотя и PowerShell тоже годится.
Чтоб vagrant исполнил код после загрузки необходимо добавить пару строк в Vagrantfile.
Выполнение одной команды
Если необходимо выполнить одну команду (например, удалить какой-то стандартный файл), то удобнее всего использовать следующую форму записи:
Эта строка задаёт тип провизора (подготовщика). Мы указали shell.
Мы задаём непосредственно команду. Всё, что идёт после двоеточия, будет выполнено в интерпретаторе по-умолчанию.
Есть несколько полезных команд, которые могут использоваться вместе с shell.
args — аргументы, которые будут переданы при выполнении команды или скрипта. Могут быть заданы как обычной строкой, так и массивом.
Пример ниже показывает использование:
Обратите внимание на одинарные кавычки вокруг hello, world!
Результатом будет вывод: hello, world!
Можно задать список аргументов массивом — это удобно тем, что можно не заморачиваться с кавычками и задать несколько аргументов:
privileged — определяет, от какого юзера запускать команду. По-умолчанию установленно True, что запустит скритп от root. Если команда должна запускаться от стандартного юзера (vagrant), то установите значения False.
Выполнение скрипта. Пишем скрипт на shell в Vagrantfile
Если вам нужно выполнить не одну строку, а целый скрипт, то удобнее это сделать немного по-другому — как сказано в официальной документации — «добавим совсем немного Ruby и получим отличный способ объеденить bash и Vagrantfile.»
Тут мы создаём переменную script, в переменную пихаем нужные нам команды. Далее вызываем наш текст командой:
Всё предельно просто.
Выполнение скрипта. Используем внешний файл
Не трудно представить, что у большинства есть любимые, оттестированные годами скрипты, которые привыкли выполнять сразу же, после установки голой системы.
В данном случае очень подойдёт умение vagrant выполнять внещние скрипты. Делается это следующим образом:
При этом, корень относится в директории с Vagrantfile, если он путь относительно.
Без проблем можно использовать и абсолютные пути (нормально работают и вещи вроде
Есть очень полезная возможность — можно в path указать даже URL , по которому доступен скрипт.
Если же у вас скрипт необходимо запустить из определённой директории внутри гостевой машины, vagrant позволяет делать и это. Необходимо лищь указать необходимую директорию командой upload_path.
Provisioning with Ansible
Если вы не знакомы с Ansible, то рекомендую, для начала прочесть вот эту статью.
При необходимости создать полноценное окружение разработчика, или если нужно развернуть СУБД и БД из дампа, то более целесообразно использовать более мощные инструменты. Одним из таких инструментов является Ansible.
Чтобы применить Ansible через vagrant необходимо сделать следующее:
При этом, Playbook.yml должен находиться в одном каталоге с Vagrantfile. После того, как машина будет поднята, vagrant запустит Ansible.
Так как сам по себе Ansible не требует никакого агента на целевой машине (ноде), то всё, что нужно сделать — указать верные данные в инвентори-файле. Если используется публичная сеть, то указываем ip ноды, если используется приватная сеть, то необходимо указать ip локалхоста (обычно 127.0.0.1) и порт.
Для Ansible имеется достаточно много опций, узнать их можно на странице официальной документации vagrant
Помимо того, что можно запускать Ansible с хоста, его можно также запускать и в самой гостевой мащине. Называется это Ansible local.
Преимущество в том, что нет необходимости устанавливать Ansible на хост. Вы можете просто загрузить роль с вашего репозитория или с Ansible galaxy и она выполнится.
Недостатки — на каждую машину необходимо устанавливать Ansible (есть хук, о нём ниже), отсутствие централизованного управления. То есть, если в дальнейшем будет необходимость управлять машинами посредством Ansible, то этот метод не для вас.
По-умолчанию, vagrant попробует сам установить Ansible на гостувую машину, для этот предусмтрено несколько опций:
install_mode — по-факту, это выбор репозитория, откуда будет устанавливаться Ansible. Если оставить значение default, то будет выбран:
Есть другое значение — pip. Тогда установка будет производиться посредтсвом pip. vagrant сначала установит pip на гостя, а затем установит Ansible.
Этот вариант предпочтительней, так как это гарантирует, что версия будет свежая и одинаковая для всех нод.
Часть Vagrantfile, которая отвечает за Ansible local практически ничем не отличается от обычного Ansible:
Подробнее о хуке, а именно о том, как использовать Ansible local для создания полноценной инфраструктуры. С помощью одного Vagrantfile можно создать ноды, которые будут разворачиваться Ansible, который установлен в виртуальной машине.
Всё, что нужно сделать вам — написать Vagrantfile, роли для Ansible с inventory и немного подправить конфигурацию Ansible.
Разберём всё подробнее.
Создаём две машины — node1 и node2. Это будут машины, которые мы будем конфигурировать с помощью Ansible, который установим на третью машину — controller.
vagrant сам установит на нужную машину Ansible. Что нам нужно — так это сделать нормальный инвентори файл, в котором будут указаны ip адреса наших нод.
Вот пример для этого файла:
И этот файлик положим в директорию с Vagrantfile, в корень.
Последний штрих — нам необходимо создать свой файл Ansible.cfg. В нём мы укажем, некоторые опции для ssh-коннекта, а именно — подключаться ко всем хостам без подтверждения
Всё, можно делать vagrant up и смотреть, как создаётся окружение.
Provisioning with Puppet
Для тех, кто привык использовать Puppet, есть возможность использовать этот инструмент с vagrant.
Для этого нам нужна следующая структура Vagrantfile:
Основное изменение, которое отличает vagrant и Puppet, от vagrant и Ansible — vagrant не может сам установить Puppet в гостя, поэтому строкой
Мы сказали, что в качестве основы для гостя необходимо использовать специальный, официальный дистрибутив от команды Puppet, в котором уже будет присутствовать агент.
Источник