Create a variable that contains other variable values with labels

22 views
Skip to first unread message

Mark Tovey

unread,
May 2, 2019, 1:00:45 PM5/2/19
to Ansible Project


    I have a list:

list1
    - value1
    - value2
 
    and I want to use set_fact create a new variable that contains these variables with a label in front of them, so that this debug task:

- debug:
msg:  "{{var1}}"

     would result in output that looks like this:

label value1
label value2 

    This gives me the expected results:

- set_fact:
var1:  |+
"{{'label ' ~ list1[0]}}"
"{{'label ' ~ list1[1]}}" 

    But I need more flexibility than that.  I need to be able to add or remove values to or from the list and not have to modify the set_fact task each time to accommodate the modification.  I tried using the join filter:

- set_fact:
var1:
"{{'label ' ~ list1 | join('\n')}}"

     And that got me:

label value1
value2

    Close, but not quite.  So what is the best method of achieving what I want? 
 
 

Matthew Davis

unread,
May 7, 2019, 8:26:28 PM5/7/19
to Ansible Project
Here is a solution using regex and map. It's not the most computationally efficient, but it works.

---
- hosts: localhost
  tasks
:
   
- name: set first fact
      set_fact
:
        list1
:
         
- value1
         
- value2

   
- name: set second fact
      set_fact
:
        var1
: "{{ list1 | map('regex_replace', '^(.*)$','label \\1')  | list }} "

   
- name: print second fact
      debug
:
       
var: var1

Regards,
Matt

Mark Tovey - DSV

unread,
May 8, 2019, 10:50:47 AM5/8/19
to ansible...@googlegroups.com

 

    Whatever works is what counts.

    Thanks,

    -Mark

--
You received this message because you are subscribed to a topic in the Google Groups "Ansible Project" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/ansible-project/lAKvHcdvCrw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/3f8bb125-1b2c-4961-b04c-2cc39e6827d4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages