2015-06-13 2 views

Antwort

4

Sobald ich angefangen habe Ruby zu lernen Ich habe die ideale Lösung :) gefunden

BEGIN Code erklärt genannt zu werden, bevor das Programm ausgeführt wird.

#!/usr/bin/ruby 
puts "This is main Ruby Program" 
BEGIN { 
    puts "Initializing Ruby Program" 
} 

wird diese produzieren:

Initializing Ruby Program 
This is main Ruby Program 

Und es funktioniert perfekt in der Vagrantfile.

4

Versuchen die vagrant-triggers plugin:

$ vagrant plugin install vagrant-triggers 

Dann fügen:

config.trigger.after :up do 
    puts 'hello' 
end 

zum Vagrantfile.

+0

Dies wird nur beim ersten 'vagrant up' und erst danach bei' vagrant provision' ausgeführt. Daher könnte es nicht * ganz * was du willst. –

+0

Thx für die Antwort aber ja, es ist nicht genau das, was ich suche ... –

+0

Aktualisierte Antwort - stieß auf ein anderes Plugin, das * könnte * tun, was Sie wollen. –

8

Vagrant benötigt kein Plugin, um am Ende eine Nachricht anzuzeigen, fügen Sie einfach einen Shell-Provisioner nach all Ihren anderen Provisionern hinzu und lassen Sie das Echo, was Sie wollen.

config.vm.provision "ansible" do |ansible| 
    # ... or other existing provisioners 

config.vm.provision "shell", privileged: false, inline: <<-EOF 
    echo "Vagrant Box provisioned!" 
    echo "Local server address is http://#{$hostname}" 
EOF 

Damit vagrant up sollte mit etwas am Ende wie folgt:

==> default: Running provisioner: shell... 
    default: Running: inline script 
==> default: Vagrant Box provisioned! 
==> default: Local server address is http://vagrant.dev 

privileged: false Hinzufügen (wie in Vagrant erwähnt Issue 1673) notwendig Ubuntu stdin: is not a tty Fehler zu unterdrücken.

+0

omg! Ofc! Danke! –

+1

Beachten Sie, dass, wenn Sie eine Ruby-Variable in den Argumenten verwenden möchten, Sie diese Frage (http://stackoverflow.com/q/17745840/5240327) behandelt haben. –

+0

Was ist, wenn Sie eine Vagrant-Datei haben, die mehrere VMs hochbringt? Ich möchte nicht, dass die Up-Nachricht mehrmals angezeigt wird. Ich = wirklich = will, dass es sich zeigt, nachdem die ganze Verarbeitung erledigt ist und bevor der Landstreicher aussteigt. –

16

Vagrant unterstützt jetzt eine Nachricht, die nach vagrant up angezeigt wird. Fügen Sie einfach diese zu Ihrem Vagrantfile:

config.vm.post_up_message = "This is the start up message!" 

Und dann nach Ihrer VM hat kommen Sie diese Meldung in grün sehen:

==> default: Machine 'default' has a post `vagrant up` message. This is a message 
==> default: from the creator of the Vagrantfile, and not from Vagrant itself: 
==> default: 
==> default:  This is the start up message! 
4

Sie können auch eine HEREDOC Stil Variable mit dem config.vm.post_up_message verwenden wie so:

$msg = <<MSG 
------------------------------------------------------ 
Local Websphere, accessible at 127.0.0.1 

URLS: 
- app under test - http://localhost:8080/<app url>/ 
- ibm console  - http://localhost:9060/ibm/console 

------------------------------------------------------ 
MSG 

... 
... 

Vagrant.configure("2") do |config| 
    config.vm.post_up_message = $msg 
end 

, die in Ausgabe wie so führen:

==> default: Machine 'default' has a post `vagrant up` message. This is a message 
==> default: from the creator of the Vagrantfile, and not from Vagrant itself: 
==> default: 
==> default: ------------------------------------------------------ 
==> default: Local Websphere, accessible at 127.0.0.1 
==> default: 
==> default: URLS: 
==> default: - app under test - http://localhost:8080/<app url>/ 
==> default: - ibm console  - http://localhost:9060/ibm/console 
==> default: 
==> default: ------------------------------------------------------ 
Verwandte Themen