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.