Ansible 同步总是设置更改

Phi*_*hil 4 ansible

我需要将 dest 文件夹的内容设置为与 src 文件夹相同。所以我使用同步模块:

- name: files for /lib/user/ based on the Runtime version
  synchronize:
    src: "/data/managedFiles/lib/{{ runtime.version }}/user/"
    dest: "{{ mule_directory }}{{ mule_runtime_name }}/lib/user/"
    delete: yes
  register: result
Run Code Online (Sandbox Code Playgroud)

但这会将结果中的“changed”设置为“true”,即使没有发生任何变化。我只需要在发生某些更改时将其设置为“true”,因为下一个任务会测试此状态。

如果我在此之后立即重复相同的同步任务,它不会将“更改”设置为“true”。但那个总是不会被设置为“true”。

在不更改 src 的情况下,后续运行的 play 始终将结果设置为“已更改”。

Phi*_*hil 5

默认情况下,文件的时间戳包含在检测何时复制文件的测试中。由于文件是从 git 中提取的,因此每次播放的时间戳都不同,从而产生了错误信号。但当相同的同步连续运行两次时则不然。解决方案是将 checksum 参数设置为 yes,以便不检查时间戳。但这还需要设置递归和归档参数:

- name: files for /lib/user/ based on the Runtime version
  synchronize:
    src: "/data/managedFiles/lib/{{ runtime.version }}/user/"
    dest: "{{ mule_directory }}{{ mule_runtime_name }}/lib/user/"
    recursive: yes
    archive: no
    checksum: yes
    delete: yes
  register: result
Run Code Online (Sandbox Code Playgroud)