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.
