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]> 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].
> 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/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/CAMFyvFioRfcQ1YwNv_UKGTHzZm%2BQiJDgfrefF1r51n8LVRqB2A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to