2016-01-16 3 views
6

Ich benutze ansible-playbook, um den Server einzurichten, der den Repo von github klont. Während ich das Spiel-Buch wieder laufen, erhalte ich die Ausnahme als msg: fatal: destination path '/webapps/........' already exists and is not an empty directory.Ansible: Git-Modul-Klon des Repositorys, während erneute Ausführung die Ausnahme auslöst

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 

Wie kann ich diesen Schritt überspringen (oder), überschreibt die Dateien, wenn Dateien sind bereits geklont und existieren auf dem Server.

+0

Haben Sie schon vor dem Verzeichnis mit ansible klonen verwaltet? Das Problem ist, dass beim ersten Klonen eines Git-Repositorys das Zielverzeichnis leer sein muss oder es nicht funktionieren wird. So funktioniert der Git-Klon (mit dem Ansible-Git-Modul kein Problem). Diese Nachricht wird vom Befehl 'git clone' generiert. –

+2

@StrahinjaKustudic Ich denke, er weiß es, und wir wissen es auch. Der Punkt ist, dass die Ansible-Module nicht verstehen, dass der Repo bereits da war und versucht, ihn erneut zu klonen. – maxadamo

+0

Ich habe gerade versucht, ein Repo in ein leeres Verzeichnis zu klonen, dann habe ich das Playbook erneut ausgeführt und es funktionierte ohne Probleme. git task meldet nur OK. Wenn Sie dieses Problem haben, könnte es sich um einen Fehler handeln, der nicht mehr existiert. –

Antwort

-7

Warum entfernen Sie nicht einfach Ordner vor dem Klonen es? http://docs.ansible.com/ansible/shell_module.html

- shell: rm -fr /yourfolder 
+0

Denken Sie nicht, dass Sie den Leuten nur sagen sollten, Verzeichnisse zu entfernen. –

+0

Es ist ein Weg, jedes Mal ein sauberes Verzeichnis zu haben, wenn er ein Repo klonen muss. – Fabri

+0

Aber das Ziel von Ansible ist es, idempotent zu sein. Es bedeutet, dass Sie das Skript 10000 Mal spielen können, es wird nichts tun, wenn es bereits die neuesten Quellen sind. Das ist also nicht die Lösung. –

Verwandte Themen