Hi
The "force" parameter controls what check is used to determine whether a
copy needs to occur;
- force=no: The file on the controller is only copied when dest does not
already exist.
- force=yes (default): The file on the controller is only copied when
dest does not exist, or dest has a different checksum
The checksum part in the docs just refers to how checksums are not used to
detect when a copy needs to occur. Here is an example workflow for win_copy
when remote_src=no:
1. If using content, it builds a tmp file on the controller that has the
content placed in it
2. Builds a listing of the file(s) to copy from the controller to the
destination file
1. If force=yes, this listing will include the sha1 checksum of each
file to by copied across
3. Sends this listing across to the Windows host. It then filters the
list to include the file(s) that need to be copied across
1. When force=no, files are only set to be copied when they don't
exist, no checksum is done here
2. When force=yes, files are set to be copied when they don't exist,
or their checksum does not match that value in the listing sent by the
controller
4. The controller then checks the returned list, if there are no files
to copy, it returns 'changed=False'
5. If only a single file needs to be copied, it is sent across as is. If
multiple files need to be copied, it is compressed to a single zip which is
then sent across
1. When sending a file it is first sent to a temp directory, this is
controlled with the ansible_remote_tmp variable
2. Before copying the file a sha1 checksum of the src path is
performed, this happens regardless of the force setting
3. After copying, a sha1 checksum is calculated and compared against
the src checksum. If it does not match then a failure will occur
6. Once the file is copied across, the file is then copied to the
correct dest path
1. If a single file, this is just copied as is
2. If it is multiple files (zip), the zip is expanded and copied to
the proper dest paths
As you can see there are multiple steps in the win_copy execution. The
force module option just controls the idempotency checks, Ansible will
still perform a checksum validation when copying the file to ensure nothing
was lost during the transfer so there shouldn't be any uncaught corruption.
If you are wanting to hard code a checksum for a file with a specific
checksum this would still need to be done with win_stat or stat +
'delegate_to: localhost' before the file is actually copied.
Unfortunately I think force is a poor name for this module option but it is
there for historical and compatibility reasons with the copy module.
Thanks
Jordan
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/8d2f786c-a5b1-46bd-bd6b-5d41fb9b2736%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.