2015-06-13 9 views

Odpowiedz

4

Kiedy zacząłem uczyć się Ruby Znalazłem idealne rozwiązanie :)

BEGIN Deklaruje kod na miano przed uruchomieniem programu.

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

będzie produkować to:

Initializing Ruby Program 
This is main Ruby Program 

i działa idealnie wewnątrz Vagrantfile.

4

Spróbuj vagrant-triggers plugin:

$ vagrant plugin install vagrant-triggers 

Następnie dodać:

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

do Vagrantfile.

+0

To będzie wykonać tylko na pierwszym "włóczęgi w górę", a dopiero potem na "rezerwę włóczęgi". W związku z tym może nie robić * całkiem * tego, co chcesz. –

+0

Thx za odpowiedź, ale tak, to nie jest dokładnie to, czego szukam ... –

+0

Zaktualizowana odpowiedź - natknąłem się na inną wtyczkę, która * może * robić, co chcesz. –

8

Vagrant nie potrzebuje wtyczki, aby wyświetlić wiadomość na końcu, po prostu dodaj zaporę powłoki po wszystkich innych elementach inicjujących i uzyskaj to, co chcesz.

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 

Z tym, vagrant up powinna kończyć się coś takiego:

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

Dodawanie privileged: false (jak wspomniano w Vagrant Issue 1673) jest niezbędne w celu powstrzymania stdin: is not a tty błąd Ubuntu.

+0

omg! ofc! Dziękuję Ci! –

+1

Zauważ, że jeśli chcesz użyć zmiennej Ruby w args, [to pytanie] (http://stackoverflow.com/q/17745840/5240327) Cię obejmuje. –

+0

Co zrobić, jeśli masz plik Vagrant, który wyświetla wiele maszyn wirtualnych? Nie chcę, aby komunikat up-up pojawiał się kilka razy. i = naprawdę = chcesz, aby pojawił się po zakończeniu przetwarzania i przed wyjściem wędrowca. –

16

Vagrant ma teraz wbudowaną obsługę wiadomości, która pojawi się po vagrant up. Wystarczy dodać do swojej Vagrantfile:

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

A potem swoją VM ma pochodzić zobaczysz ten komunikat jest zielona:

==> 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

Można również użyć zmiennej stylu heredoc z config.vm.post_up_message jak tak:

$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 

co spowoduje wyjście tak:

==> 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: ------------------------------------------------------ 
Powiązane problemy