"But due to the fact that you cannot do that with jinja2 variable expansion
and such,"

- set_fact:
     foo: "{{ x }}"

The system will preserve complex dict/list types, I haven't tried it with
boolean types recently.


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
> <https://groups.google.com/d/msgid/ansible-project/CAD8N0v8UM%3DiKL2%2B0N-voLv7a42gn5Ay5dEB9-%2B0SEaKgHiFouA%40mail.gmail.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/CA%2BnsWgySujWY6JBCxOMSe6r6N8NZRSYVsNigJZCWsYhPfRDT0A%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to