Module "include_vars" fails with when using "file" parameter

442 views
Skip to first unread message

Frank Thommen

unread,
Aug 23, 2016, 10:49:08 AM8/23/16
to ansible...@googlegroups.com
Hi,

when using the include_module with the "file" parameter, it fails with

AttributeError: 'NoneType' object has no attribute 'startswith'.


This works fine:

----- testmyvars_1.yml -----------
---
- hosts: '{{ target }}'
gather_facts: no
tasks:
- include_vars: ./myvars_1.yml

- name: "Test myvars.yml"
debug: msg='Variable {{ item.key }} is named "{{
item.value.name }}" and has the value {{item.value.value}}'
with_dict: "{{ var }}"
$
----------------------------------


----- myvars_1.yml ---------------
---
var:
A:
name: "Variable A"
value: "aaa"

B:
name: "Variable B"
value: "bbb"
...
----------------------------------


$ ansible-playbook testmyvars_1.yml --extra-vars "target=MYHOST" \
--ask-pass
SSH password:

PLAY [MYHOST] ************************************************************

TASK [include_vars]
************************************************************
ok: [MYHOST]

TASK [Test myvars.yml]
*********************************************************
ok: [MYHOST] => (item={'value': {u'name': u'Variable A', u'value':
u'aaa'}, 'key': u'A'}) => {
"item": {
"key": "A",
"value": {
"name": "Variable A",
"value": "aaa"
}
},
"msg": "Variable A is named \"Variable A\" and has the value aaa"
}
ok: [MYHOST] => (item={'value': {u'name': u'Variable B', u'value':
u'bbb'}, 'key': u'B'}) => {
"item": {
"key": "B",
"value": {
"name": "Variable B",
"value": "bbb"
}
},
"msg": "Variable B is named \"Variable B\" and has the value bbb"
}

PLAY RECAP
*********************************************************************
MYHOST : ok=2 changed=0 unreachable=0 failed=0

$


But this one fails:

----- testmyvars_2.yml -----------
---
- hosts: '{{ target }}'
gather_facts: no
tasks:
- include_vars: file="./myvars_1.yml"

- name: "Test myvars.yml"
debug: msg='Variable {{ item.key }} is named "{{
item.value.name }}" and has the value {{item.value.value}}'
with_dict: "{{ var }}"
----------------------------------


$ ansible-playbook -vvv testmyvars_2.yml \
--extra-vars "target=MYHOST" \
--ask-pass
Using /root/ansible-config/ansible.cfg as config file
SSH password:

PLAYBOOK: testmyvars_2.yml
*****************************************************
1 plays in testmyvars_2.yml

PLAY [MYHOST] ************************************************************

TASK [include_vars]
************************************************************
task path: /root/ansible-config/testmyvars_2.yml:5
An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
File
"/root/ansible/ansible/lib/ansible/executor/task_executor.py", line 124,
in run
res = self._execute()
File
"/root/ansible/ansible/lib/ansible/executor/task_executor.py", line 447,
in _execute
result = self._handler.run(task_vars=variables)
File
"/root/ansible/ansible/lib/ansible/plugins/action/include_vars.py", line
41, in run
source =
self._loader.path_dwim_relative(self._loader.get_basedir(), 'vars', source)
File "/root/ansible/ansible/lib/ansible/parsing/dataloader.py",
line 236, in path_dwim_relative
if source.startswith('~') or source.startswith('/'):
AttributeError: 'NoneType' object has no attribute 'startswith'

fatal: [MYHOST]: FAILED! => {"failed": true, "msg": "Unexpected failure
during module execution.", "stdout": ""}

NO MORE HOSTS LEFT
*************************************************************
to retry, use: --limit @testmyvars_2.retry

PLAY RECAP
*********************************************************************
MYHOST : ok=0 changed=0 unreachable=0 failed=1

$

I also tried to use the absolute path to myvars_1.yml to no avail.

I could of course use the free-form of include_vars, but I'd like to
eventually get rid of the top level variable in ./myvars_1.yml and use
the "name" parameter to assign the included variables to a specific name.

Ansible version: ansible-playbook 2.2.0 (devel 3afe50dfe2)
Platform: openSuSE 13.1

Is this my bug or ansible's? If it's mine: Any idea how I can fix it?

Cheers
frank


Frank Thommen

unread,
Aug 23, 2016, 10:49:09 AM8/23/16
to ansible...@googlegroups.com

Frank Thommen

unread,
Aug 23, 2016, 10:49:09 AM8/23/16
to ansible...@googlegroups.com

Frank Thommen

unread,
Aug 24, 2016, 6:46:32 AM8/24/16
to ansible...@googlegroups.com
On 08/23/2016 03:38 PM, Frank Thommen wrote:
> Hi,
>
> when using the include_module with the "file" parameter, it fails with
>
> AttributeError: 'NoneType' object has no attribute 'startswith'.
>
> [...]

Seems to have been fixed in the latest 2.2 release
f.


Brian Coca

unread,
Feb 9, 2017, 10:19:52 PM2/9/17
to Ansible Project
that parameter got added in 2.2, which you are using, but the error
seems to be from trying to use it in an older version.


----------
Brian Coca
Reply all
Reply to author
Forward
0 new messages