2016-04-26 7 views
1

ich diese sich wiederholende Muster haben ::ansible stat kopieren with_items

- stat: path={{ home }}/.vimrc 
    register: st 
- copy: src=.vimrc dest={{ home }}/.vimrc 
    when: not st.stat.exists 

- stat: path={{ home }}/.gitconfig 
    register: st 
- copy: src=.vimrc dest={{ home }}/.gitconfig 
    when: not st.stat.exists 
... 

Wie kann ich es tun mit with_items für eine große Liste? ::

with_items: 
    - .vimrc 
    - .bashrc 
    - .profile 
    - .gitconfig 

Antwort

5

Manchmal möchten Sie sogar nicht die Datei kopieren, wenn die Datei auf dem Zielcomputer existiert, auch der Inhalt unterscheiden. Dann können Sie wie folgt verwenden (nicht getestet es nicht in Ihrem Szenario, aber ich denke, es wird funktionieren)

- stat: path="{{ home }}/{{ item }}" 
    with_items: 
    - .vimrc 
    - .bashrc 
    - .profile 
    - .gitconfig 
    register: st 


- copy: src="{{ item.item }}" dest="{{ home }}/{{ item.item }}" 
    with_items: "{{ st.results }}" 
    when: not item.stat.exists 

Hoffnung, die Ihnen helfen

3

Sie die Kraft nutzen können Parameter:

- copy: src={{ item }} dest={{ home }}/{{ item }} force=no 
    with_items: 
    - .vimrc 
    - .bashrc 
    - .profile 
    - .gitconfig 

Force = Nein schreibt eine Datei nur, wenn sie noch nicht existiert. Ich denke, das ist genau das, was Sie wollen.

+0

Randbemerkung: Ich Arbab Nazar Lösung wegen cp verwenden bei der Verwendung Verjährungsfrist Option: directory_mode und remote_src. Weitere Informationen finden Sie in der Dokumentation [Mögliche Kopieroptionen] (http://docs.ansible.com/ansible/latest/copy_module.html#options). – Martin