- name: install rsync package: name: rsync when: ansible_distribution != "MacOSX" - name: Clean up the working directory and files file: path: '{{ output_dir }}' state: absent - name: Create the working directory file: path: '{{ output_dir }}' state: directory - name: create test new files copy: dest: '{{output_dir}}/{{item}}' mode: '0644' content: 'hello world' with_items: - foo.txt - bar.txt - name: synchronize file to new filename synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - '''cmd'' in sync_result' - '''rsync'' in sync_result.cmd' - '''msg'' in sync_result' - sync_result.msg.startswith('>f+') - 'sync_result.msg.endswith(''+ foo.txt '')' - name: test that the file was really copied over stat: path: '{{ output_dir }}/foo.result' register: stat_result - assert: that: - stat_result.stat.exists == True - stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed' - name: test that the file is not copied a second time synchronize: src='{{output_dir}}/foo.txt' dest='{{output_dir}}/foo.result' register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - sync_result.changed == False - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - foo.result - bar.result - name: Synchronize using the mode=push param synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' mode: push register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - '''cmd'' in sync_result' - '''rsync'' in sync_result.cmd' - '''msg'' in sync_result' - sync_result.msg.startswith('>f+') - 'sync_result.msg.endswith(''+ foo.txt '')' - name: test that the file was really copied over stat: path: '{{ output_dir }}/foo.result' register: stat_result - assert: that: - stat_result.stat.exists == True - stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed' - name: test that the file is not copied a second time synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' mode: push register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - sync_result.changed == False - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - foo.result - bar.result - name: Synchronize using the mode=pull param synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' mode: pull register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - '''cmd'' in sync_result' - '''rsync'' in sync_result.cmd' - '''msg'' in sync_result' - sync_result.msg.startswith('>f+') - 'sync_result.msg.endswith(''+ foo.txt '')' - name: test that the file was really copied over stat: path: '{{ output_dir }}/foo.result' register: stat_result - assert: that: - stat_result.stat.exists == True - stat_result.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed' - name: test that the file is not copied a second time synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' mode: pull register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - sync_result.changed == False - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - foo.result - bar.result - name: synchronize files using with_items (issue#5965) synchronize: src: '{{output_dir}}/{{item}}' dest: '{{output_dir}}/{{item}}.result' with_items: - foo.txt - bar.txt register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - sync_result.changed - sync_result.msg == 'All items completed' - '''results'' in sync_result' - sync_result.results|length == 2 - 'sync_result.results[0].msg.endswith(''+ foo.txt '')' - 'sync_result.results[1].msg.endswith(''+ bar.txt '')' - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}.result' with_items: - foo.txt - bar.txt - name: synchronize files using rsync_path (issue#7182) synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.rsync_path' rsync_path: 'sudo rsync' register: sync_result delegate_to: '{{ inventory_hostname }}' - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - '''cmd'' in sync_result' - '''rsync'' in sync_result.cmd' - '''rsync_path'' in sync_result.cmd' - '''msg'' in sync_result' - sync_result.msg.startswith('>f+') - 'sync_result.msg.endswith(''+ foo.txt '')' - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - foo.rsync_path - name: add subdirectories for link-dest test file: path: '{{output_dir}}/{{item}}/' state: directory mode: '0755' with_items: - directory_a - directory_b - name: copy foo.txt into the first directory synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/{{item}}/foo.txt' with_items: - directory_a delegate_to: '{{ inventory_hostname }}' - name: synchronize files using link_dest synchronize: src: '{{output_dir}}/directory_a/foo.txt' dest: '{{output_dir}}/directory_b/foo.txt' link_dest: - '{{output_dir}}/directory_a' register: sync_result delegate_to: '{{ inventory_hostname }}' - name: get stat information for directory_a stat: path: '{{ output_dir }}/directory_a/foo.txt' register: stat_result_a - name: get stat information for directory_b stat: path: '{{ output_dir }}/directory_b/foo.txt' register: stat_result_b - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - stat_result_a.stat.inode == stat_result_b.stat.inode - name: synchronize files using link_dest that would be recursive synchronize: src: '{{output_dir}}/foo.txt' dest: '{{output_dir}}/foo.result' link_dest: - '{{output_dir}}' register: sync_result ignore_errors: true delegate_to: '{{ inventory_hostname }}' - assert: that: - sync_result is not changed - sync_result is failed - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - directory_b/foo.txt - directory_a/foo.txt - directory_a - directory_b - name: setup - test for source with working dir with spaces in path file: state: directory path: '{{output_dir}}/{{item}}' delegate_to: '{{ inventory_hostname }}' with_items: - 'directory a' - 'directory b' - name: setup - create test new files copy: dest: '{{output_dir}}/directory a/{{item}}' mode: '0644' content: 'hello world' with_items: - foo.txt delegate_to: '{{ inventory_hostname }}' - name: copy source with spaces in dir path synchronize: src: '{{output_dir}}/directory a/foo.txt' dest: '{{output_dir}}/directory b/' delegate_to: '{{ inventory_hostname }}' register: sync_result ignore_errors: true - name: get stat information for directory_b stat: path: '{{ output_dir }}/directory b/foo.txt' register: stat_result_b - assert: that: - '''changed'' in sync_result' - sync_result.changed == true - stat_result_b.stat.exists == True - stat_result_b.stat.checksum == '2aae6c35c94fcfb415dbe95f408b9ce91ee846ed' - name: Cleanup file: state: absent path: '{{output_dir}}/{{item}}' with_items: - 'directory b/foo.txt' - 'directory a/foo.txt' - 'directory a' - 'directory b'