2013-08-06 5 views
1

Je dois créer un script simple (Windows .bat) qui va provisionner ou monter une boîte.Vagrant Up ou Provision si déjà Up

pas beaucoup d'expérience avec les fichiers .bat, c'est donc ce que j'ai jusqu'à présent:

Edité grâce à Greg Hewgill

cd C:\vagrant-box\ 

call vagrant-up.bat 

if errorlevel 1 call vagrant-provision.bat 

Les fichiers .bat call ed dans le script contient tout simplement une ligne: vagrant up et vagrant reload, respectivement.

Lorsque la zone de vagabondage est en panne, alors le vagabondage s'exécute avec succès. Lorsque je me lève, je rencontre une erreur avec le vagabondage (que j'attends) mais le fichier batch entier meurt là. ErrorLevel ne semble pas faire quoi que ce soit.


Voici l'erreur si cela fait une différence

Bringing machine 'default' up with 'virtualbox' provider... 
There was an error while executing `VBoxManage`, a CLI used by Vagrant 
for controlling VirtualBox. The command and stderr is shown below. 

Command: ["list", "hostonlyifs"] 

Stderr: VBoxManage.exe: error: Failed to create the VirtualBox object! 
VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005) - Server execution failed (extend) 
VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start. 

Je veux souligner Je ne me soucie pas de l'erreur en soi. Cela fonctionne quand la boîte ne fonctionne pas, donc c'est bon. Je veux juste capturer ou ignorer, et passer à la commande suivante. Quitte

+1

J'ai supprimé ma réponse car elle ne répond plus à votre question éditée, et de toute façon elle n'a pas résolu votre problème. –

+0

pourquoi avez-vous besoin de l'appeler? Qu'est-ce qui ne va pas avec la commande 'start' – Monacraft

+0

@GregHewgill Eh bien merci, c'était utile si ce n'est pas exactement une * réponse *. Le jist était: "si errorlevel 0" évalue à "true" si le "errorlevel" est * supérieur ou égal à 0 *, alors changez-le en "if errorlevel 1". – willoller

Répondre

2

vagrant up quitte avec le code 0 même si la machine est déjà en cours d'exécution.

Mais vous ne devez pas vous embêter avec les codes de sortie, vous pouvez simplement lancer:

vagrant provision && vagrant up 

Et vous devez couvrir les deux cas. Si l'invité ne fonctionne pas, vagrant provision échouera gracieusement et vagrant up réussira, et vice versa.

1

Veuillez poster votre vagrant-up.bat.

Aussi, essayez ce soit: vagrant up --debug

et/ou

VAGRANT_LOG=debug vagrant <action>

Pour obtenir plus detais sur la question COM/VBox.