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.
