Прочитавши ще раз своє запитання, здається, ви намагаєтесь зробити щось трохи інше, ніж я, - але я думаю, наша кінцева мета однакова.
Я не хочу використовувати сервіс Vagrant Cloud для розміщення моїх базових вікон, але я хочу мати можливість поширювати середовище розробки для своєї команди розробників та використовувати функції metadata.json
файлу для підтримки системи версій для середовища розробки, яка буде доступна моїй команді розробників просто за допомогою засобів, вбудованих у бродячі.
На момент написання цієї документації бродяча документація в цій галузі дуже рідка (8/5/2014), імовірно, тому, що це відносно нова особливість, але я впевнений, що факт, що VagrantCloud має платний рівень, також має щось спільне з цим .
Щоб зрозуміти, як використовувати metadata.json
файл для версії та розповсюдження ящиків, я ознайомився з деякими віртуальними машинами, доступними у VagrantCloud. Переглянувши їх і прочитавши частину бродячого коду - стало досить легко зрозуміти, як досягти своєї мети.
- Упакуйте свою коробку, як зазвичай. У моєму випадку я пакую лише для віртуальної коробки, тому що саме це використовуватимуть наші розробники для запуску Vm. Я також пакую Vagrantfile зі своєю базовою скринькою, яка виконує деякі умови для середовища розробки (встановлення спільних папок у відповідні папки, деякі основні конфігурації apache, реєстрація помилок тощо)
Створіть metadata.json
файл для опису базового вікна, моє схоже на це:
{
"description": "long box description",
"short_description": "short box description",
"name": "company/developer-environment",
"versions": [{
"version": "1",
"status": "active",
"description_html": "<p>Dev Environment</p>",
"description_markdown": "Dev Environment",
"providers": [{
"name": "virtualbox",
"url": "http:\/\/vagrant.domain.local/dev/company-developer-environment-1.box"
}]
}]
}
Після створення metadata.json
файлу я завантажив його на локальний сервер, який працює у нашій внутрішній мережі ( vagrant.domain.local/metadata.json
). Після того, як я це зробив, все, що залишилося, - це перевірити це бродячим:
# add the box to vagrant using the definition from metadata.json
# (the box is actually downloaded here, so it can take a minute...or 10)
$ vagrant box add http://vagrant.domain.local/dev/metadata.json
# init the box (this creates a .vagrant folder and a Vagrantfile in the cwd with the appropriate box name)
$ vagrant init company/developer-environment
# boot the box
$ vagrant up
Voila, приватна скринька, що розміщена на відкритому повітрі, розміщена та розроблена, що не потребує використання Vagrant Cloud.
Під час створення нових версій коробки ви будете пакувати її та редагувати metadata.json
файл. З того, що я можу сказати, ви можете використовувати будь-яку схему версій, яку ви хочете, будь то семантична версія (1.0.0, 1.0.1 і т. Д.) Або просто цілі числа для версій (1, 2, 3 тощо). Коли користувачі вашої скриньки vagrant up
бродять автоматично перевіряє ваш файл metadata.json на нову версію, і запропонує їм зробити vagrant box update
оновлення цього поля.
Ви також можете пропустити vagrant box add <metadata.json url>
і vagrant init
біти, визначивши базовий Vagrantfile з іменем поля та URL-адресою поля, наприклад:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "company/developer-environment"
config.vm.box_url = "https://vagrant.domain.local/dev/metadata.json"
end
Ви можете поширити Vagrantfile із цим вмістом, і всі користувачі зможуть це зробити vagrant up
. Хоча я не впевнений у тому, як це працює, коли версії оновлюються.