2015-11-10 10 views
5

Używam Ansible do zarządzania konfiguracją oraz następujące zadanie sklonować repo Git:Jak wyciągnąć podczas wdrażania w ansibla

# Example git checkout from Ansible Playbooks 
- git: repo=git://foosball.example.org/path/to/repo.git 
     dest=/srv/checkout 
     version=release-0.22 

ten klonuje repo z konkretnej wersji.

Czy wykona on git pull po ponownym uruchomieniu, jeśli repo już istnieje? Czy może po prostu klonować repo cały czas? Jak zrobić git pull w Ansible, jeśli repozytorium już istnieje i jak możemy uruchomić konkretne polecenie, jeśli repozytorium istnieje i to samo, jeśli repo jest sklonowane po raz pierwszy?

Odpowiedz

7

Ansible to narzędzie deklaratywne, w którym opisujesz, w jaki sposób chcesz wyglądać serwer/środowisko, a Ansible próbuje to zrobić. Zaprojektowano go tak, aby był idempotent, co oznacza, że ​​ponowne odtwarzanie twoich sztuk powinno powtarzać ten sam efekt końcowy za każdym razem, o ile nic pod nim się nie zmieniło.

Przypisuje to również do tego i po prostu próbuje się upewnić, że zdalny host ma repozytorium na nim i do wersji (lub oddziału/tagu), o które ewentualnie poprosiłeś.

Kiedy więc uruchomisz zadanie git w swoim pytaniu na świeżym środowisku, sklonuje ono repo do folderu docelowego. W przyszłych seriach, repo już tam jest, więc po prostu robi ciągnięcie git.

Jeśli podasz tag/branch/commit ref do właściwości update, po prostu sprawdzisz tę wersję i ją wyciągniesz.

+0

Dziękuję za odpowiedź. Ale w jaki sposób przywrócić git niż? –

+1

'git revert' jest zmianą, która wpływa na twoje repozytorium, a nie czymś, na co zwykle chciałbyś używać Ansable (lub dowolnego automatycznego narzędzia innego niż narzędzie do budowania). Użyj opcji Ansible, aby określić, która wersja twojego kodu (np. Branch/tag/commit ref), którą chcesz na hoście, i zostaw to. – ydaetskcoR