2015-08-27 13 views
5

Używam vagrant i ansibl, aby zapewnić maszynę wirtualną i to działa dobrze. Klasyfikacja ansameli klonuje repozytorium git, instaluje je i uruchamia demona usługi.Oddzielne podręczne playbacki udostępniania ansambla

Chciałbym również mieć polecenie vagrant, które wykonuje oddzielny "aktualizujący" podręcznik, który ściąga najnowszą wersję repozytorium git, instaluje i restartuje demona.

Coś takiego zastosowania byłoby miłe.

Vagrant.configure("2") do |config| 

    # Default 
    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "playbook.yml" 
    end 

    # Update 
    config.vm.provision "ansible", name="update" do |ansible| 
    ansible.playbook = "update.yml" 
    end 
end 

Następnie mógłbym to uruchomić z vagrant --provision-with update. Czy coś takiego jest możliwe? Chciałbym uniknąć konieczności ssh w polu, aby uruchomić aktualizację w ten sposób.

Odpowiedz

13

Nie jestem pewien, dlaczego odpowiedź danej osoby została usunięta, ponieważ była poprawna. Od vagrant 1.7.0 możesz name provisions.

Poniżej pracował:

Vagrant.configure("2") do |config| 

    # Default 
    config.vm.provision "main", type: "ansible" do |ansible| 
    ansible.playbook = "playbook.yml" 
    end 

    # Update 
    config.vm.provision "update", type: "ansible" do |ansible| 
    ansible.playbook = "update.yml" 
    end 
end 

Można użyć vagrant provision --provision-with <foo> aby następnie wykonać jedn.

Jeśli jednak zrobisz vagrant up, wszystkie prowadnice będą działać, co nie jest pożądane. Jako rozwiązanie domyślnie uruchamiam vagrant up --no-provision, a następnie vagrant provision --provision-with main, którą umieszczam w pliku Makefile.