Hi Todd Lewis,
Thanks . I am able to understand it . However the split happens based on
',' , and then we remove the quotes with map('map', 'trim')) and align the
lines with range.
However assuming split with delimiter as comma, when i try to replace 1
with 0 the output is [msg: "{{ range(my_var | length) | map('extract',
(my_var | map('split', ',') | map('map', 'trim')), [1]) }}"]
ok: [localhost] =>
msg:
- line1 has
- line2 has
- line3 has
and when tried to add [0 1] in the end [msg: "{{ range(my_var | length) |
map('extract', (my_var | map('split', ',') | map('map', 'trim')), [0 1])
}}"]
it printsok: [localhost] =>
msg:
- i
- i
- i
that is second character in the word line[0]. Is not the split breaks the
words with (',')?
How to print all the available column? instead of 1( yes the full file
without a comma now )
Actually I am trying to print like below
line1 has color-red
line2 has color-blue
line3 has, color-orange
On Friday, December 15, 2023 at 2:44:45 AM UTC+5:30 Todd Lewis wrote:
> In the code below, note that "range(my_var | length)" is equivalent to "[0,
> 1, 2]".
>
> In the set_fact, we don't "loop" the task; rather we loop over the data
> within the jinja2 expression by using the map filter.
>
> utoddl@tango:~/ansible*$ cat veera01.yml*
> ---
> # veera01.yml
> - name: Jinja expressions
> hosts: localhost
> gather_facts: false
> vars:
> my_var:
> - "line1 has , color-red, in its middle"
> - "line2 has, color-blue, in its middle"
> - "line3 has, color-orange, in its middle"
> tasks:
> - name: Split and trim parts from my_var
> ansible.builtin.debug:
> msg: "{{ my_var | map('split', ',') | map('map', 'trim') }}"
>
> - name: Extract the "color-*" parts from my_var
> ansible.builtin.debug:
> msg: "{{ range(my_var | length) | map('extract', (my_var |
> map('split', ',') | map('map', 'trim')), [1]) }}"
>
> - name: Same but as set_fact
> ansible.builtin.set_fact:
> new_var: "{{ range(my_var | length) | map('extract', (my_var |
> map('split', ',') | map('map', 'trim')), [1]) }}"
>
>
> utoddl@tango:~/ansible*$ ansible-playbook veera01.yml -v*
> Using /etc/ansible/ansible.cfg as config file
>
> PLAY [Jinja expressions] **********************************************
>
> TASK [Split and trim parts from my_var] *******************************
> ok: [localhost] =>
> msg:
> - - line1 has
> - color-red
> - in its middle
> - - line2 has
> - color-blue
> - in its middle
> - - line3 has
> - color-orange
> - in its middle
>
> TASK [Extract the "color-*" parts from my_var] ************************
> ok: [localhost] =>
> msg:
> - color-red
> - color-blue
> - color-orange
>
> TASK [Same but as set_fact] *******************************************
> ok: [localhost] => changed=false
> ansible_facts:
> new_var:
> - color-red
> - color-blue
> - color-orange
>
> PLAY RECAP ************************************************************
> localhost : ok=3 changed=0 unreachable=0 failed=0
> skipped=0 rescued=0 ignored=0
>
>
>
> On 12/14/23 5:50 AM, Veera wrote:
>
> I have a playbook variable output as below
>
>
> debug:
> msg: "{{my_var}}}"
>
> TASK [debug]
> **************************************************************************************************************************
> ok: [localhost] => {
> "msg": [
> "line1 has , color-red, in its middle"
> "line2 has, color-blue, in its middle"
> "line3 has, color-orange, in its middle"
> ]
> }
>
> I want to use the output lines as an input for another variable using
> set_fact , as like below .
>
> - name: Filtering the color data
> ansible.builtin.set_fact:
> new_var: "{{ item.split(',')[1] }}"
> loop: "{{ var1 }}"
>
> and I am looking for the data like below
> color-red
> color-blue
> color-orange
>
> - debug:
> var: new_var
> gives only color-red
>
> But my var1 looping process the first line only in from the my_var and
> not the next 2 lines.
> This is an example and I may expect lines from my_var from 0 to 100's.
>
> How to print the column[]of output) with multiple lines ??
>
> --
> 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 view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/3490a8af-689c-4cb1-8670-1495258df226n%40googlegroups.com
>
> <https://groups.google.com/d/msgid/ansible-project/3490a8af-689c-4cb1-8670-1495258df226n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>
> --
> Todd
>
>
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/ced33992-6f08-498e-8fe3-712957b2f011n%40googlegroups.com.