Bug report: https://github.com/ansible/ansible/issues/8881

On Wednesday, 3 September 2014 17:11:31 UTC+1, Dan Bohea wrote:
>
> No worries :)
>
> This is with Ansible v1.7.1 so I'll file the bug report and point back 
> here for reference.
>
>
> On Wednesday, 3 September 2014 17:06:10 UTC+1, Michael DeHaan wrote:
>>
>> Yes, the quotes definitely look funky.
>>
>> Thanks for bearing with me and my reading comprehension skills.
>>
>> If this occurs on 1.7.1 or devel, can you file a bug on this one?  This 
>> most definitely should not happen and we'll want to correct this.
>>
>> Thanks!
>>
>>
>>
>> On Wed, Sep 3, 2014 at 8:08 AM, Dan Bohea <[email protected]> wrote:
>>
>>> Sure. Once again for reference, here's that path from the error message:
>>>
>>> [u'/Volumes/Data/Projects/vlad/vlad/vlad/playbooks/"../settings.yml", 
>>> "../example.settings.yml"']
>>>
>>> Disregarding the wrapping square brackets, the wrapping single quotes 
>>> and the preceding "u" gives us:
>>>
>>> /Volumes/Data/Projects/vlad/vlad/vlad/playbooks/"../settings.yml", 
>>> "../example.settings.yml"
>>>
>>> Now look at where the first and second double quotes are. That looks 
>>> funky to me.
>>>
>>> Surely the first element in the array should be entirely wrapped in 
>>> double quotes? Also, having '../' anywhere other than at the start of a 
>>> path is surely going to cause problems.
>>>
>>> It appears as if Ansible is prefixing an absolute path (the path to the 
>>> playbook making the call: /Volumes/Data/Projects/vlad/vlad/vlad/
>>> playbooks/) to my expanded variable, irrespective of what my variable 
>>> contains. This in turn is making the expanded variable a bit garbled, hence 
>>> the error.
>>>
>>>
>>> On Wednesday, 3 September 2014 12:42:38 UTC+1, Michael DeHaan wrote:
>>>
>>>> "settings_files: '"../settings.yml", "../example.settings.yml"'
>>>>
>>>> It should be noted this is not a YAML list, and that is probably part 
>>>> of your problem.
>>>>
>>>> The path being an array of unicode elements does not look strange to 
>>>> me.  Is there a particular path element in the list that looks strange to 
>>>> you?
>>>>
>>>>
>>>> On Wed, Sep 3, 2014 at 5:28 AM, Dan Bohea <[email protected]> wrote:
>>>>
>>>>>  Thanks for the suggestion but I already tried that and it results in 
>>>>> a huge error:
>>>>>
>>>>> Traceback (most recent call last):
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/libexec/bin/ansible-playbook", 
>>>>> line 5, in <module>
>>>>>     pkg_resources.run_script('ansible==1.7.1', 'ansible-playbook')
>>>>>   File "/System/Library/Frameworks/Python.framework/Versions/2.7/
>>>>> Extras/lib/python/pkg_resources.py", line 489, in run_script
>>>>>     self.require(requires)[0].run_script(script_name, ns)
>>>>>   File "/System/Library/Frameworks/Python.framework/Versions/2.7/
>>>>> Extras/lib/python/pkg_resources.py", line 1207, in run_script
>>>>>     execfile(script_filename, namespace, namespace)
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/EGG-INFO/scripts/ansible-playbook", 
>>>>> line 309, in <module>
>>>>>     sys.exit(main(sys.argv[1:]))
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/EGG-INFO/scripts/ansible-playbook", 
>>>>> line 249, in main
>>>>>     pb.run()
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/playbook/__init__.py", line 
>>>>> 339, in run
>>>>>     if not self._run_play(play):
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/playbook/__init__.py", line 
>>>>> 646, in _run_play
>>>>>     play.update_vars_files(all_hosts, vault_password=self.vault_
>>>>> password)
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/playbook/play.py", line 698, 
>>>>> in update_vars_files
>>>>>     self._update_vars_files_for_host(h, vault_password=vault_password)
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/playbook/play.py", line 847, 
>>>>> in _update_vars_files_for_host
>>>>>     filename2, filename3, filename4 = generate_filenames(host, inject, 
>>>>> filename)
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/playbook/play.py", line 775, 
>>>>> in generate_filenames
>>>>>     filename4 = utils.path_dwim(self.basedir, filename3)
>>>>>   File "/usr/local/Cellar/ansible/1.7.1/lib/python2.7/site-
>>>>> packages/ansible-1.7.1-py2.7.egg/ansible/utils/__init__.py", line 
>>>>> 318, in path_dwim
>>>>>     if given.startswith("/"):
>>>>> AttributeError: 'list' object has no attribute 'startswith'
>>>>>
>>>>> I'm guessing that this is the most useful part of that error:
>>>>>
>>>>> AttributeError: 'list' object has no attribute 'startswith'
>>>>>
>>>>> Out of curiosity, I wrapped each path string in the list with double 
>>>>> quotes but it results in pretty much the same thing.
>>>>>
>>>>> On Wednesday, 3 September 2014 07:24:16 UTC+1, Tomasz Kontusz wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>> Michael DeHaan <[email protected]> napisał: 
>>>>>> >What were you expecting? 
>>>>>> > 
>>>>>> >It's saying none of the files in the list were found and hitting an 
>>>>>> >error 
>>>>>> >condition, but I'm unclear which parts you find unusual. 
>>>>>>
>>>>>> The path in the error looks strange ;-) 
>>>>>>
>>>>>> >On Tue, Sep 2, 2014 at 11:05 AM, Dan Bohea <[email protected]> 
>>>>>> wrote: 
>>>>>> > 
>>>>>> >> So I just recently discovered how to list several possible 
>>>>>> >vars_files, 
>>>>>> >> with precedence, and where some may not exist: 
>>>>>> >> 
>>>>>> >> 
>>>>>> >> 
>>>>>> >http://serverfault.com/questions/589734/ansible-can-i-use-
>>>>>> vars-files-when-some-files-do-not-exist 
>>>>>> >> 
>>>>>> >> Very handy. Where is the documentation for this? 
>>>>>> >> 
>>>>>> >> 
>>>>>> >> Next question... 
>>>>>> >> 
>>>>>> >> I'd like to centralise a list of possible vars_files in a single 
>>>>>> >variable 
>>>>>> >> but can't get it to work. E.g: 
>>>>>> >> 
>>>>>> >> vars_files: 
>>>>>> >>   - [ "{{ settings_files }}" ] 
>>>>>> >> 
>>>>>> >> and then in say group_vars/all I have my files defined: 
>>>>>> >> 
>>>>>> >> settings_files: '"../settings.yml", "../example.settings.yml"' 
>>>>>>
>>>>>> I think you want to create a list here, like this: 
>>>>>>
>>>>>> settings_files: 
>>>>>>  - ../settings.yml 
>>>>>>  - ../example.settings.yml 
>>>>>>
>>>>>> And then use it like this: 
>>>>>>
>>>>>> vars_files: 
>>>>>>    - "{{ settings_files }}" 
>>>>>>
>>>>>> >> But that doesn't work - I get the following error: 
>>>>>> >> 
>>>>>> >> vlad: not importing file: 
>>>>>> >> /Volumes/Data/Projects/vlad/vlad/vlad/playbooks/"../settings.yml", 
>>>>>>
>>>>>> >> "../example.settings.yml" 
>>>>>> >> ERROR: vlad: FATAL, no files matched for vars_files import 
>>>>>> sequence: 
>>>>>> >> [u'/Volumes/Data/Projects/vlad/vlad/vlad/playbooks/"../settings.yml", 
>>>>>>
>>>>>> >> "../example.settings.yml"'] 
>>>>>> >> 
>>>>>> >> It looks like something is happening on expansion that I wasn't 
>>>>>> >expecting. 
>>>>>> >> 
>>>>>> >> I'm hoping this is just a question of syntax and I've messed 
>>>>>> around 
>>>>>> >with a 
>>>>>> >> few variations but am still having no luck. 
>>>>>> >> 
>>>>>> >> Can anyone help with this? Is it even possible? 
>>>>>> >> 
>>>>>> >> I'm running Ansible v1.7.1. 
>>>>>> >> 
>>>>>> >> -- 
>>>>>> >> You received this message because you are subscribed to the Google 
>>>>>> >Groups 
>>>>>> >> "Ansible Project" group. 
>>>>>> >> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> >send an 
>>>>>> >> email to [email protected]. 
>>>>>> >> To post to this group, send email to 
>>>>>> >[email protected]. 
>>>>>> >> To view this discussion on the web visit 
>>>>>> >> 
>>>>>> >https://groups.google.com/d/msgid/ansible-project/fce326b0-
>>>>>> 5489-45b7-976c-58e8a3e11769%40googlegroups.com 
>>>>>> >> 
>>>>>> ><https://groups.google.com/d/msgid/ansible-project/fce326b0
>>>>>> -5489-45b7-976c-58e8a3e11769%40googlegroups.com?utm_medium=email&utm_
>>>>>> source=footer> 
>>>>>> >> . 
>>>>>> >> For more options, visit https://groups.google.com/d/optout. 
>>>>>> >> 
>>>>>>
>>>>>> -- 
>>>>>> Wysłane za pomocą K-9 Mail. 
>>>>>>
>>>>>  -- 
>>>>> You received this message because you are subscribed to the Google 
>>>>> Groups "Ansible Project" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>>> an email to [email protected].
>>>>> To post to this group, send email to [email protected].
>>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>>> msgid/ansible-project/68da09fe-bcbc-4ca5-a1ee-
>>>>> 3e7ddaafb1eb%40googlegroups.com 
>>>>> <https://groups.google.com/d/msgid/ansible-project/68da09fe-bcbc-4ca5-a1ee-3e7ddaafb1eb%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>
>>>>  -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "Ansible Project" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/ansible-project/f2f992ff-7d73-47a4-83ba-43dbf1e59f4f%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/ansible-project/f2f992ff-7d73-47a4-83ba-43dbf1e59f4f%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/1b8c409a-fc70-4bd6-a068-f4b62fa1c909%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to