Après avoir relu votre question, il semble que vous essayez de faire quelque chose d'un peu différent de ce que je suis - mais je pense que notre objectif final est le même.
Je ne souhaite pas utiliser le service Vagrant Cloud pour héberger mes bases, mais je souhaite pouvoir distribuer un environnement de développement à mon équipe de développement et utiliser les fonctionnalités du metadata.json
fichier pour gérer un système de gestion des versions pour l'environnement de développement. qui sera ensuite disponible pour mon équipe de développement simplement en utilisant les installations intégrées à vagabond.
La documentation vagabonde est vraiment rare dans ce domaine au moment de la rédaction de cet article (le 8/5/2014), sans doute parce que c'est une fonctionnalité relativement nouvelle, mais je suis sûr que le fait que VagrantCloud ait un niveau payant y est aussi pour quelque chose. .
Pour comprendre comment utiliser le metadata.json
fichier en version et distribuer des boîtes, j'ai jeté un coup d'œil à certaines des machines virtuelles disponibles sur VagrantCloud. Après avoir parcouru ceux-ci et lu une partie du code vagabond, il devint assez facile de comprendre comment atteindre mon objectif.
- Emballez votre boîte comme vous le feriez normalement. Dans mon cas, je n'emballe que pour une boîte virtuelle, car c'est ce que nos développeurs utiliseront pour exécuter Vm. J'emballe également un Vagrantfile avec ma basebox qui effectue un provisionnement pour l'environnement de développement (configuration des partages dans les dossiers appropriés, configuration de base d'Apache, consignation des erreurs, etc.).
Créez un metadata.json
fichier pour décrire votre boîte de base, le mien ressemble à ceci:
{
"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"
}]
}]
}
Une fois que j'ai créé mon metadata.json
fichier, je l'ai téléchargé sur un serveur local s'exécutant sur notre réseau interne ( vagrant.domain.local/metadata.json
). Une fois que j'ai fait cela, tout ce qui restait à faire était de le tester avec vagabond:
# 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, une boîte privée hébergée à distance, partagée et versionnée, qui ne nécessite pas l'utilisation du nuage vagabond.
Au fur et à mesure que vous créez de nouvelles versions de votre boîte, vous la conditionnerez et modifierez le metadata.json
fichier. D'après ce que je peux dire, vous pouvez utiliser le schéma de gestion de version de votre choix, qu'il s'agisse du versioning sémantique (1.0.0, 1.0.1, etc.) ou simplement de simples nombres entiers pour les versions (1, 2, 3, etc.). Lorsque votre utilisateur de la boîte de dialogue vagrant up
vagrant vérifie automatiquement la nouvelle version de votre fichier metadata.json, il est invité à le faire vagrant box update
pour mettre à jour la boîte.
Vous pouvez également ignorer les bits vagrant box add <metadata.json url>
et vagrant init
en définissant un Vagrantfile de base avec le nom et l'URL de la boîte, comme suit:
# -*- 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
Vous pouvez distribuer un fichier Vagrant avec ce contenu et tous les utilisateurs pourront le faire vagrant up
. Cependant, je ne sais pas comment cela fonctionne lorsque les versions sont mises à jour.