Ansible - Unarchive模块覆盖

fr0*_*0zt 5 ansible

我正在使用ansible和使用剧本.在这个剧本中,我正在执行下载(从Web URL)并将文件解压缩到主机(使用unarchive模块),然后我将一些文件从控制机器复制到主机(使用复制模块).

发生的事情是,每次我使用unarchive模块时,虽然每个文件都相同,但是ansible会覆盖主机中的文件.如果内容相同,我怎样才能使它不会覆盖?

我的剧本:

---
- hosts: group1
sudo: yes
tasks:

  - name: Download and Extract apache
  unarchive:
   src: http://mirrors.up.pt/pub/apache/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz
   dest: /opt/
   remote_src: yes

- name: Copy file to host
  copy: src=/etc/ansible/files/myfile.xml dest=/opt/apache-tomcat-9.0.1/conf/myfile.xml
Run Code Online (Sandbox Code Playgroud)

Pau*_*ges 6

添加一个creates引用unarchive位置的选项.

点击此处的文档页面(根据您使用的内容查看版本.)

例如:

- unarchive:
    remote_src : yes
    src        : "{{ url }}"
    dest       : "{{ install_dir }}/"
    creates    : "{{ flagFile }}" 
Run Code Online (Sandbox Code Playgroud)

如果unarchive使用名为bar的文件创建/ tmp/foo目录,则flagFile可以是/ tmp/foo/bar,如果已经存在,则unarchive将不再运行.