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.

Reply via email to