Hello James,

No, the checksum of the file is the same when it exists.

i tried using:

 - stat: path=/path/to/file get_checksum=no get_md5=no 

without success.


Thanks for your help! 


Any other tip is welcome.


Adam

On Wednesday, April 8, 2015 at 9:46:07 AM UTC-5, James Cammarata wrote:
>
> Is the checksum of the file different when it exists? If not, the file 
> will not be replaced.
>
> James Cammarata
> Director, Ansible Core Engineering
> github: jimi-c
>
> On Tue, Apr 7, 2015 at 4:39 PM, Nino Pineda <[email protected] 
> <javascript:>> wrote:
>
>> Hello James,
>>
>> nameoffile.stat.isreg is undefined and nameoffile.stat.isreg == false,  
>> evaluates to true when the file does not exists. I just deleted the target 
>> file, ran the playbook and this one copies the src to target. If the 
>> destination exists does not do anything.
>>
>> I tried with the statement that you suggested:
>>
>>            flag_to_overwrite or nameoffile.stat.isreg is undefined or not 
>> nameoffile.stat.isreg
>>
>> but also does not matter what value flag_to_overwrite has, if the 
>> destination exists, the src it isn't copied. 
>>
>> The contents of vars/main.yml is:
>> ---
>> flag_to_overwrite: true
>>
>>
>>
>> How to use variables defined outside the *when* clause of the stat 
>> module?
>>
>>
>> I tested again placing inside of* when* clause:
>>
>> flag_to_overwrite == true 
>>
>> but the file is only copied if destination does not exist.
>>
>>
>> If the destination does not exist placing flag_to_overwrite to false the 
>> playbook does not change anything (leaving only ----- when: 
>> flag_to_overwrite in the stat module invocation), changing 
>> flag_to_overwrite to true does copy the src to dest only one time. (i.e. if 
>> destination exists it is not overwritten even if flag_to_overwrite is set 
>> to true).
>>
>>
>> Thanks for your suggestions.
>>
>>
>>
>> Adam
>>
>> On Monday, April 6, 2015 at 11:03:19 AM UTC-5, James Cammarata wrote:
>>>
>>> Hi Adam, the logic you have there is the problem. "(nameoffile.stat.isreg 
>>> is undefined and nameoffile.stat.isreg == false)" will never evaluate to 
>>> true, as "isreg" cannot be both undefined and false. I think you want to 
>>> change the and to an or, as follows (also simplified a little):
>>>
>>> when: flag_to_overwrite or nameoffile.stat.isreg is undefined or not 
>>> nameoffile.stat.isreg
>>>
>>> Hope that helps!
>>>
>>>
>>> James Cammarata
>>> Director, Ansible Core Engineering
>>> github: jimi-c
>>>
>>> On Sat, Apr 4, 2015 at 1:53 AM, Adam R. <[email protected]> wrote:
>>>
>>>> Hello,
>>>>
>>>>
>>>> I am using the stat module to check if a file exist, if not, copy from 
>>>> src to destination. I also want to setup a flag in order to overwrite 
>>>> destination, to achieve this, i am using a conditional like the one on the 
>>>> *when* clause:
>>>>
>>>> - stat: path=/path/to/file
>>>>   register: nameoffile
>>>> - copy: src=/home/user/source.tar.gz dest=/destination/path/file 
>>>> owner=root 
>>>> group=root
>>>>   when: flag_to_overwrite == true or (nameoffile.stat.isreg is 
>>>> undefined and nameoffile.stat.isreg == false)
>>>>
>>>>
>>>> In vars/main.yml:
>>>> flag_to_overwrite: true
>>>>
>>>>
>>>> If the destination does exist and flag_to_overwrite is set to true, 
>>>>  when i run the playbook, ansible-playbook doesn't show any error, but the 
>>>> file 
>>>> is not overwritten. 
>>>>
>>>> If i use only the variable flag_to_overwrite, the value it's been 
>>>> evaluated and works ok (true copies the file, false does not do anything).
>>>>   when: flag_to_overwrite == true
>>>>
>>>>
>>>> I have used:
>>>> when: flag_to_overwrite or (nameoffile.stat.isreg is undefined and 
>>>> nameoffile.stat.isreg == false)
>>>>
>>>> when: (flag_to_overwrite == true) or (nameoffile.stat.isreg is 
>>>> undefined and nameoffile.stat.isreg == false)
>>>>
>>>> but the compound conditional does not work.
>>>>
>>>>
>>>> Any hint?
>>>>
>>>>
>>>> Thanks in advance!
>>>>
>>>>
>>>> Ansible 1.7
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  -- 
>>>> 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/74d19de5-32a7-4b40-b31b-
>>>> 3617fe18af5e%40googlegroups.com 
>>>> <https://groups.google.com/d/msgid/ansible-project/74d19de5-32a7-4b40-b31b-3617fe18af5e%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  -- 
>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/ansible-project/35582265-2ded-4d4e-b4ae-7e1bebb8dbd5%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/35582265-2ded-4d4e-b4ae-7e1bebb8dbd5%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
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/f1e8a275-b8c0-47ac-8b0c-26d78d460421%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to