2015-11-10 7 views
5

Sto usando Ansible per la gestione della configurazione e la seguente attività di clonare un repo Git:come tirare, mentre la distribuzione 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 

Questa cloni il repo con la particolare versione.

Fa un git pull quando viene eseguito nuovamente se il repository esiste già? O semplicemente clona il repository tutto il tempo? Come fare un git pull in Ansible se il repository esiste già e come possiamo eseguire un comando specifico se il repository esiste e lo stesso se il repository è clonato per la prima volta?

risposta

7

Ansible è uno strumento dichiarativo in cui viene descritto come si desidera visualizzare il server/ambiente e i tentativi di conferma di Ansible. È inoltre progettato per essere idempotent, il che significa che rieseguire le tue riproduzioni dovrebbe riprodurre sempre lo stesso risultato finale finché non è cambiato nulla al di sotto.

Il git module attribuisce anche a questo e cerca semplicemente di assicurarsi che l'host remoto abbia il repository su di esso e alla versione (o ramo/tag) che si è richiesto facoltativamente.

Quindi, quando si esegue l'attività git nella domanda su un ambiente nuovo, clonerà il repository nella cartella di destinazione. Nelle corse future, il pronti contro termine è già lì quindi fa semplicemente un tiro di merda.

Se si specifica un tag/ramo/commit ref alla proprietà update, sarà sufficiente verificare la versione e estrarla.

+0

Grazie per la risposta. Ma come fare git revert di? –

+1

Un 'git revert' è una modifica in avanti che riguarda il repository e non qualcosa che in genere si vorrebbe usare per Ansible (o qualsiasi altro strumento automatico diverso da uno strumento di compilazione). Usa Ansible per specificare quale versione del tuo codice (es. Branch/tag/commit ref) desideri sull'host e lasciatela. – ydaetskcoR