dang, could have sworn I tried that.   It works, thanks Matt, that's 
exactly what I was looking for!!  appreciate it.

On Wednesday, May 8, 2019 at 1:58:55 PM UTC-7, Matt Martz wrote:
>
> The root of the problem is a bit complicated, and rooted in the fact that 
> historically jinja2 could only return strings.  So we have code that 
> attempts to safely convert string representations of python datastructures 
> into actual python data structures.
>
> What appears to be your problem is a bunch of added whitespace caused by 
> the jinja2 templating.  The following seems to resolve the problem:
>
>     users: >-
>       {%- set cusers = ['user1', 'user2'] -%}
>       {%- if ansible_distribution == "RedHat" -%}
>       {{ cusers.append('redhat_user') }}
>       {%- else -%}
>       {{ cusers.append('other_user') }}
>       {%- endif -%}
>       {{ cusers | list }}
>
> Notice the use of {%- and -%} which informs jinja2 to strip whitespace.  
> See http://jinja.pocoo.org/docs/dev/templates/
>
> > You can also strip whitespace in templates by hand. If you add a minus 
> sign (-) to the start or end of a block (e.g. a For tag), a comment, or a 
> variable expression, the whitespaces before or after that block will be 
> removed
>
> On Wed, May 8, 2019 at 3:43 PM Adam E <[email protected] <javascript:>> 
> wrote:
>
>> thanks for the reply, I had also thought of that solution and it's 
>> perfectly viable for my example (thanks).  however was looking for 
>> something that doesn't use multiple variables and avoids repetition.   My 
>> example was just a simple one, in some cases I have more complex jinja 
>> statements and the crux of what I was after was how to nicely do complex 
>> multiline jinja statements that use lists.
>>
>> On Wednesday, May 8, 2019 at 1:11:43 PM UTC-7, Kai Stian Olstad wrote:
>>>
>>> On 03.05.2019 22:15, Adam E wrote: 
>>> > Hi there, I have some logic that I want to apply when creating 
>>> assigning a 
>>> > list to a variable. 
>>> > 
>>> > See my sample playbook below, Ideally i'd like a nice clean way to 
>>> have a 
>>> > logic based list. the "users" approach works, however it's always 
>>> > interpreted as a string.  The only solution I can think of to fix this 
>>> one 
>>> > is to store it as a string and then split it later.  But I would like 
>>> to 
>>> > know if it's possible to return a list somehow.   Maybe there's a 
>>> different 
>>> > syntax that i'm not aware of.  Can anyone offer a better way to do 
>>> > something like below? 
>>> > 
>>> > - hosts: localhost 
>>> >    connection: local 
>>> >    vars: 
>>> >      # THIS does not work as it's interpreted as a string, would have 
>>> to 
>>> > split in a new var? 
>>> >      # is there anything I can do here to keep a similar syntax but 
>>> return a 
>>> > list? 
>>> >      users: >- 
>>> >        {% set cusers = ['user1', 'user2'] %} 
>>> >        {% if ansible_distribution == "RedHat" %} 
>>> >        {{ cusers.append('redhat_user') }} 
>>> >        {% else %} 
>>> >        {{ cusers.append('other_user') }} 
>>> >        {% endif %} 
>>> >        {{ cusers | list }} 
>>> >      # THIS works but a little ugly with the newline 
>>> >      users2: "{% set cusers = ['user1', 'users2'] %}\ 
>>> >               {% if ansible_distribution == 'RedHat' %}\ 
>>> >               {{ cusers.append('redhat_user') }}\ 
>>> >               {% else %}\ 
>>> >               {{ cusers.append('other_user') }}\ 
>>> >               {% endif %}\ 
>>> >               {{ cusers }}" 
>>>
>>> Something like this should work 
>>>
>>>   vars: 
>>>     cuser: ['user1', 'user2'] 
>>>     users: "{{ cuser + ['redhat_user'] if ansible_distribution == 
>>> 'RedHat' else cuser + ['other_user'] }}" 
>>>
>>> -- 
>>> Kai Stian Olstad 
>>>
>> -- 
>> 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/14fa6ba6-67c2-4113-9d75-4c2312f0dc7b%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/ansible-project/14fa6ba6-67c2-4113-9d75-4c2312f0dc7b%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> -- 
> Matt Martz
> @sivel
> 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/d5c7af20-5a70-4cc7-b322-e65b4e1f46d5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to