18 votes

Emballage d'une boîte de base avec un fichier Vagrant personnalisé

J'ai un fichier Vagrant spécifique pour une boîte lucid32 qui installe quelques paquets assez standards (PHP/MySQL/Apache), fait quelques transferts de ports spécifiques et ainsi de suite, je l'ai configuré, j'ai extrait un projet de git et changé quelques configurations de serveur, je veux empaqueter cette boîte pour que les autres développeurs de l'équipe puissent l'utiliser, donc j'utilise la commande :

vagrant package boxname --output test.box --vagrantfile Vagrantfile

Je reçois un fichier test.box, il est noté dans l'emballage qu'il ajoute mon fichier Vagrant spécifique, puis je l'exécute :

vagrant box add boxname test.box

Il apparaît dans vagrant box list tout va bien, maintenant quand je crée un répertoire de test, et que je fais vagrant init boxname suivi par vagrant up et ensuite il fournit cette boîte avec les fichiers de la caisse et tout le reste, mais est-ce que no configurer le transfert de port approprié, et en fait, il n'utilise pas du tout le fichier Vagrant avec lequel je l'ai empaqueté, mais en a généré un nouveau par défaut dans ce répertoire.

J'ai remarqué que dans ~/.vagrant.d/boxes/boxname il y a le Vagrantfile par défaut, ainsi que celui que j'ai empaqueté dans includes/_Vagrantfile.

Y a-t-il un moyen d'obtenir que le fichier Vagrant spécifique soit celui généré lorsque je fais vagrant init boxname ?

23voto

Mitchell Points 6646

Tout cela fonctionne comme prévu. Vagrant charge de multiples Vagrantfiles (pas seulement celui de vagrant init ) lors du chargement, et le fichier Vagrantfile emballé avec une boîte est l'un d'entre eux. Pour plus d'informations, lisez l'article "Ordre de chargement de Vagrantfile" ici : https://www.vagrantup.com/docs/vagrantfile/#load-order-and-merging

En un mot : Vagrant charge plusieurs fichiers Vagrant dans un ordre spécifique, et fusionne leurs configurations. Le fichier Vagrantfile de la boîte est chargé dans le cadre de ce processus avant le fichier Vagrantfile racine (celui de vagrant init ).

Il n'y a actuellement aucun moyen de créer un squelette de fichier Vagrant généré avec vagrant init .

La configuration que vous avez mise dans le fichier Vagrant empaqueté, comme les port forwards, devrait être chargée correctement, puisque lors de la fusion des configurations, elle devrait juste ajouter tous les port forwards.

Si cela ne se produit pas, vous devriez signaler un bogue ! Mais dans l'intérêt d'une réponse SO, voici comment les choses sont censées se comporter.

0voto

Miraj Hamid Points 268

Ce code a fonctionné pour moi

vagrant package --output vagrant_example.box

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X