lookup csvfile with_items issue

Hi! I’m struggling to get ‘lookup’ with ‘csvfile’ in combination with ‘with_items’ to work.

I have this csv file (shortened snippet):

"col1","col2" 1,"Mike" 2,"Sally"

Than I also have this var:

`
test_ids:

  • 1
  • 2
    `

Now I want to lookup (docs: https://docs.ansible.com/playbooks_lookups.html#the-csv-file-lookup) the values in the second column of the csv file:

`

  • name: read from csv file
    debug: msg=“{{ lookup(‘csvfile’, ‘item file=/path/to/file.csv delimiter=, col=1’) }}”
    with_items: test_ids
    `

Where ‘item’ before file=/… should output 1 and 2 right??

This doesn’t work, output is:

TASK: [client-setup | read from csv file] ******** ok: [localhost] => (item=1) => { "item": 1, "msg": "[]" } ok: [localhost] => (item=2) => { "item": 2, "msg": "[]" }

As you can see it recognizes 1 and 2, but I don’t get the values of the second column in the csv.

If I hardcode the number in like so:

`

  • name: read from csv file
    debug: msg=“{{ lookup(‘csvfile’, ‘1 file=test.csv delimiter=, col=1’) }}”
    with_items: test_ids

`

It does give me the correct result:

TASK: [client-setup | read from csv file] ******** ok: [localhost] => (item=1) => { "item": 1, "msg": "Mike" } ok: [localhost] => (item=2) => { "item": 2, "msg": "Mike" }

I tried quoting the var with ‘1’ and ‘2’, but that doesn’t work either.

Is this a bug or am I doing something wrong?

you are forcing item to be a static string, it needs to be like this:

- name: read from csv file
  debug: msg="{{ lookup('csvfile', item + ' file=/path/to/file.csv
delimiter=, col=1') }}"
  with_items: test_ids

Thanks Brian! It doing something more now, that’s good :slight_smile:

However, I now get this error:

fatal: [localhost] => Failed to template msg="{{ lookup('csvfile', item + ' file=test.csv delimiter="," col=2') }}": csvfile: "delimiter" must be string, not unicode

I tried quoting the comma, double and single. And tried the approach in this thread, both single and double: https://groups.google.com/forum/#!topic/ansible-project/r2L3UONwaN0 like so:

debug: msg="{{ lookup('csvfile', item + ' file=test.csv delimiter='","' col=2') }}"

But also doesn’t work.

Any ideas?

For extra clarification: I started getting this error without the quotes around the comma. So like this, produces the same error:

debug: msg="{{ lookup('csvfile', item + ' file=test.csv delimiter=, col=2') }}"

Any ideas on the

"delimiter" must be string, not unicode

error?