lookup and default value

115 views
Skip to first unread message

fanvalt

unread,
Sep 8, 2016, 8:40:33 AM9/8/16
to Ansible Project
Hello,

Is there a way to set a default value when using the lookup module for a csv file.

Case 1:

Here is the csv file:

OPENHRPORT;;;;;;

I would like to set the '1' value if the value in the csv file is not specified:

   vars:
     - port: "{{ lookup('csvfile', 'OPENHRPORT file=vars/test.csv delimiter=; col=1') | default('1') }}"
   tasks:
     - debug: msg="port openhr {{ port }}"


But it returns the port varibale set to blank or unset, I would like it set to 1
    "msg": "port openhr "


Case 2:
the csv file has only one key set:

OPENHRPORT;;;;;;

And I want to lookup at another key and set a default value if the key is not present in the csv file:
   vars:
     - port: "{{ lookup('csvfile', 'OPDFT file=vars/test.csv delimiter=; col=1') | default('1') }}"
   tasks:
     - debug: msg="port openhr {{ port }}"

But it returns in the list bracket , I would expect it set to 1 
 "msg": "port openhr []"

Could you give me any help on this lookup module and default value ?

Regards,

fanvalt

unread,
Sep 8, 2016, 9:23:12 AM9/8/16
to Ansible Project
I found out how to bypass the issue for case 1 by using:
- set_fact: port='1'
       when: port is not defined or port ==''

But it does not bypass the issue in case 2.
if port is [], empty list, what value of port should I test ?

fanvalt

unread,
Sep 8, 2016, 9:25:58 AM9/8/16
to Ansible Project
I did find out the way to bypass for the 2 cases:
 - set_fact: port='1'
       when: port.0 is not defined or port ==''


Le jeudi 8 septembre 2016 14:40:33 UTC+2, fanvalt a écrit :

fanvalt

unread,
Sep 22, 2016, 3:20:45 AM9/22/16
to Ansible Project
I cannot proceed that way when using a with_items loop.
I want to read parameters from a .csv file, and if the parameter does not exist , I want to set it to space.
i guess the issue is that instead of comparing the parameter value to an empty list, it does test if the parameter name is empty. 
Where am I doing wrong ?

  - set_fact:
    "{{ item.name }}": "{{ lookup('csvfile', '{{ item.csvvar }} file=vars/{{ ansible_user }}.csv delimiter=; col={{ numinst }}') }}"
  with_items:
    - { name: 'KARAFHTTPTIMEOUT', csvvar: 'KARAFHTTPTIMEOUT' }
    - { name: 'dbType', csvvar: 'DBTYPE' }

- name: if empty set it to space
  set_fact:
    "{{ item }}": " "
  with_items:
    - KARAFHTTPTIMEOUT
    - dbType
  when: item.0 is not defined

Regards
Reply all
Reply to author
Forward
0 new messages