2015-11-10 6 views
5

I Ansible für das Konfigurationsmanagement verwenden und die folgende Aufgabe, eine Git-Repo zu klonen:Wie zu ziehen, während Einsatz in ansible

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

Diese klont den Repo mit der jeweiligen Version.

Führt es eine git pull wenn erneut ausgeführt, wenn der Repo bereits existiert? Oder klont es das Repo einfach die ganze Zeit? Wie funktioniert eine git pull in Ansible, wenn der Repo bereits existiert und wie können wir einen bestimmten Befehl ausführen, wenn der Repo existiert und derselbe, wenn der Repo zum ersten Mal geklont wird?

Antwort

7

Ansible ist ein deklaratives Tool, in dem Sie beschreiben, wie Ihr Server/Ihre Umgebung aussehen soll, und Ansible versucht, dies zu ermöglichen. Es ist auch darauf ausgelegt, idempotent zu sein, was bedeutet, dass das erneute Ausführen Ihrer Spiele jedes Mal das gleiche Endergebnis reproduzieren sollte, solange sich nichts darunter geändert hat.

Die git module schreibt auch dies zu und versucht einfach sicherzustellen, dass der Remote-Host das Repo darauf hat und auf die Version (oder Zweig/Tag), die Sie optional angefordert haben.

Wenn Sie also die Git Task in Ihrer Frage in einer neuen Umgebung ausführen, klont sie das Repo in den Zielordner. Bei zukünftigen Läufen ist das Repo bereits da, also macht es einfach einen git pull.

Wenn Sie ein Tag/Zweig/Commit Ref an die update Eigenschaft angeben, dann wird es einfach diese Version auschecken und ziehen.

+0

Vielen Dank für Ihre Antwort. Aber wie geht es mit git zurück? –

+1

Eine 'git revert' ist eine Forward-Änderung, die sich auf Ihr Repo auswirkt und nicht auf etwas, für das Sie normalerweise Ansible verwenden möchten (oder ein anderes automatisiertes Tool als ein Build-Tool). Verwenden Sie Ansible, um anzugeben, welche Version Ihres Codes (z. B. branch/tag/commit ref) Sie auf dem Host haben möchten, und belassen Sie sie dabei. – ydaetskcoR

Verwandte Themen