Ashar
Ashar

Reputation: 3245

Ansible - Concatinating variable give error `can only concatenate list (not \"NoneType\") to list"`

I have three variable files app1.yml, app2.yml and app3.yml having the same variable name viz dbconn

cat app1-webapps-dev.yml
dbconn:
  - host1 port1

cat app2-webapps-dev.yml
dbconn:
  - host4 port4
  - host5 port5

cat app3-webapps-dev.yml
dbconn:

As you can see the variable dbconnin app3.yml is empty. When empty the below ansible play to concat the variable fails with error:

- set_fact:
    dbconn: "{{ dbconn|d([]) + (lookup('file', item ~ '-webapps-' + ENV ~ '.yml' )|from_yaml).dbconn }}"
  loop:
    - app1
    - app2
    - app3

Error:

fatal: [localhost]: FAILED! => {"msg": "Unexpected templating type error occurred on ({{ dbconn|d([]) + (lookup('file', item ~ '-webapps-' + ENV ~ '.yml' )|from_yaml).dbconn }}): can only concatenate list (not "NoneType") to list"}

Can you please suggest?

Upvotes: 0

Views: 1284

Answers (1)

The_Pingu
The_Pingu

Reputation: 192

you can add a condition, as a NoneType equals false

- set_fact:
    dbconn: "{{ dbconn|d([]) + (lookup('file', item ~ '-webapps-dev'~ '.yml' )|from_yaml).dbconn  }}"
  when:   ((lookup('file', item ~ '-webapps-dev'~ '.yml' )|from_yaml).dbconn)

Upvotes: 1

Related Questions