Yes, I realize the difference between a string and a boolean. But I've
never seen a system where "foo" and "not foo" evaluate to the same
thing.

On Thu, Aug 14, 2014 at 7:47 AM, Michael DeHaan <[email protected]> wrote:
> "Also, isn't it weird the with the variable foo set to string "false"
> both "when: foo" and "when: not foo" evaluate to false?"
>
> This is a programming language concept.
>
> No, as the string 'false' in Python or any prograis not the same as False.
>
> there is a difference between these two:
>
> vars:
>     x: "false"
>     x: false
>
> The above quoted one is a string whose value is the word "false" and it's
> important the word doesn't get auto-converted into a boolean.
>
>
>
>
> On Wed, Aug 13, 2014 at 1:43 PM, Michael Peters <[email protected]>
> wrote:
>>
>> Also, isn't it weird the with the variable foo set to string "false"
>> both "when: foo" and "when: not foo" evaluate to false?
>>
>> On Wed, Aug 13, 2014 at 1:42 PM, Michael Peters
>> <[email protected]> wrote:
>> > 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/CAJQqANcV4JdBJPAkws%2B4Q-TOwBCh9WwQWOZKcwgR9W%3DFC4Y7Cw%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/CA%2BnsWgyWXrt-aZz-marw61BSRsXQpMWnw2CN_0r%3Da-MQ0NuDsA%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/CAJQqANfYFgKp64dXO%3DDg2yAf4n%3DXZyCNdJo83WsdZeHBePyzFQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to