2016-01-16 9 views
6

Sto usando ansible-playbook per configurare il server, che sta clonando il repository da github. Mentre sto rieseguire il play-libro, sto ottenendo l'eccezione come msg: fatal: destination path '/webapps/........' already exists and is not an empty directory.Ansible: clona il modulo Git del repository mentre ri-esegue l'eccezione di lancio

TASK: [web | Setup the Git repo] ********************************************** 
failed: [192.168.1.96] => {"cmd": "/usr/bin/git clone --origin origin --branch master https://github.com/....../......git /webapps/....../...../....", "failed": true, "rc": 128} 
stderr: fatal: destination path '/webapps/..../..../....' already exists and is not an empty directory. 

msg: fatal: destination path '/webapps/..../..../....' already exists and is not an empty directory. 

FATAL: all hosts have already failed -- aborting 

PLAYBOOK

- name: Setup the Git repo 
    git: repo={{ git_repo }} 
     version="{{ git_branch }}" 
     dest={{ project_path }} 
     accept_hostkey=yes 
     force=yes 
    when: setup_git_repo is defined and setup_git_repo 
    tags: git 

- name: Delete all .pyc files 
    command: find . -name '*.pyc' -delete 
    args: 
    chdir: "{{ project_path }}" 
    tags: git 

Come faccio saltare questo passaggio (o) sovrascrivere i file, se i file sono già clonati e esistono nel server.?.

+0

Avete anche riusciti a clonare quella directory con ansible prima? Il problema è che la prima volta che cloni un repository git la directory di destinazione deve essere vuota o non funzionerà. È così che funziona git clone (non è un problema con il modulo git ansibile). Quel messaggio è generato dal comando 'git clone'. –

+2

@StrahinjaKustudic Penso che lo sappia, e lo sappiamo anche noi. Il punto è che i moduli ansible non capiscono che il repository era già lì e cerca di clonarlo di nuovo. – maxadamo

+0

Ho appena provato a clonare un repository in una directory vuota, poi ho eseguito di nuovo il playbook e ha funzionato senza problemi. l'attività git riporta semplicemente OK. Quindi, se avessi questo problema, potrebbe essere stato un bug e non esiste più. –

risposta

-7

Perché non rimuovi la cartella prima di clonarla? http://docs.ansible.com/ansible/shell_module.html

- shell: rm -fr /yourfolder 
+0

Non pensare che dovresti semplicemente dire alle persone di rimuovere le directory. –

+0

È un modo per avere una directory pulita ogni volta che ha bisogno di clonare un repository. – Fabri

+0

Ma lo scopo di ansible è quello di essere idempotente. Significa che puoi giocare lo script 10000 volte, non farà nulla se sono già le fonti più recenti. Quindi questa non è la soluzione. –