ansible stat然后复制with_items

时间:2016-04-26 16:41:00

标签: ansible

我有这种重复的模式::

- 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
...

如何使用 with_items 获取大型列表?::

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

2 个答案:

答案 0 :(得分:10)

有时你甚至不想复制文件,如果文件存在于目标计算机上,即使内容不同。然后你可以像这样使用(没有在你的场景中测试它,但我认为它会起作用)

- 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

希望能帮到你

答案 1 :(得分:3)

您可以使用force参数:

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

强制=仅当文件尚不存在时才写入文件。 我认为这正是你想要的。