Thanks, this works. I was under the impression that the 2 syntax variants (yaml vs key-value) worked the same. Is this something that should be fixed or just documented as a difference?
On Wed, Aug 13, 2014 at 12:25 PM, Matt Martz <[email protected]> wrote: > If you use the pure YAML complex args way of invoking a module, you can make > it an actual boolean: > > - set_fact: > foo: False > > But due to the fact that you cannot do that with jinja2 variable expansion > and such, I'd recommend just sticking to using the |bool filter at > evaluation time. It's more reliable and safer that way. > > > On Wed, Aug 13, 2014 at 10:31 AM, Michael Peters <[email protected]> > wrote: >> >> Is there a way to use set_fact to force it to use a real boolean >> instead of the string? In the real playbook other tasks and includes >> further down don't care where the var came from and I'd rather not >> have to alter every boolean to run things through the bool filter just >> in case the var came from set_fact. >> >> I tried >> >> - set_fact: foo={{ false }} >> and >> - set_fact: foo={{ false | bool }} >> >> But neither of those work. >> >> On Wed, Aug 13, 2014 at 11:19 AM, Matt Martz <[email protected]> wrote: >> > What is happening is that you are effectively setting foo to the string >> > "false" >> > >> > What you likely want to do is: >> > >> > when: not foo|bool >> > >> > >> > On Wednesday, August 13, 2014, Michael Peters >> > <[email protected]> >> > wrote: >> >> >> >> Before I file a ticket, I just want to make sure I'm not doing >> >> anything wrong. BTW, this is a simplified example to reproduce the >> >> problem, not what I was actually trying to do. I have this simple >> >> playbook test.yml: >> >> >> >> --- >> >> - hosts: 127.0.0.1 >> >> connection: local >> >> tasks: >> >> - set_fact: foo=false >> >> >> >> - command: ls / >> >> when: not foo >> >> >> >> Executed like this: >> >> >> >> ansible-playbook -i '127.0.0.1,' test.yml >> >> >> >> >> >> Which results in the following output: >> >> PLAY [127.0.0.1] >> >> ************************************************************** >> >> >> >> GATHERING FACTS >> >> *************************************************************** >> >> ok: [127.0.0.1] >> >> >> >> TASK: [set_fact foo=false] >> >> **************************************************** >> >> ok: [127.0.0.1] >> >> >> >> TASK: [command ls /] >> >> ********************************************************** >> >> skipping: [127.0.0.1] >> >> >> >> Notice the last task is skipped. So for some reason it's not following >> >> the logic of the when clause like I'd expect. But the really weird >> >> thing is that if I change the task to say "when: foo" (reverse the >> >> logic) I get the same output: >> >> >> >> --- >> >> - hosts: 127.0.0.1 >> >> connection: local >> >> tasks: >> >> - set_fact: foo=false >> >> >> >> - command: ls / >> >> when: foo >> >> >> >> Executed like this: ansible-playbook -i '127.0.0.1,' test.yml >> >> >> >> PLAY [127.0.0.1] >> >> ************************************************************** >> >> >> >> GATHERING FACTS >> >> *************************************************************** >> >> ok: [127.0.0.1] >> >> >> >> TASK: [set_fact foo=false] >> >> **************************************************** >> >> ok: [127.0.0.1] >> >> >> >> TASK: [command ls /] >> >> ********************************************************** >> >> skipping: [127.0.0.1] >> >> >> >> Same output. So even if something with my logic was wrong (for >> >> instance set_fact didn't like the literal "false") you would still >> >> think that taking out the "not" would result in the task being >> >> executed. >> >> >> >> ansible 1.8 (devel 9edf3a749a) last updated 2014/08/13 14:03:10 (GMT >> >> +000) >> >> >> >> Am I doing something wrong? Or should I file a bug report? >> >> >> >> -- >> >> 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/CAJQqANdAt%3D3PB30cEDMqknJHY%2BAr3VwpxePrgN4J-dvfeZUWGQ%40mail.gmail.com. >> >> For more options, visit https://groups.google.com/d/optout. >> > >> > >> > >> > -- >> > Matt Martz >> > [email protected] >> > http://sivel.net/ >> > >> > -- >> > 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/CAD8N0v_XppVmJ_%3DzxCn7NrbbyAOjLueX%2BqJz%2Ba23nQq62vTJBA%40mail.gmail.com. >> > 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/CAJQqANd92zR_QLV588wmVqF%2B7Ywitc2D1JJjbBtSd4cfGfBLzw%40mail.gmail.com. >> >> For more options, visit https://groups.google.com/d/optout. > > > > > -- > Matt Martz > [email protected] > http://sivel.net/ > > -- > 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/CAD8N0v8UM%3DiKL2%2B0N-voLv7a42gn5Ay5dEB9-%2B0SEaKgHiFouA%40mail.gmail.com. > > 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/CAJQqANdR7kxbtssBj7%2BgNuvfb2iWQWPdNH3d8srwaDipiaKYqQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
