I've opened https://github.com/ansible/ansible/issues/6660 with details...

thanks!
matt



On Mon, Mar 24, 2014 at 3:41 PM, Matt Coddington <[email protected]>wrote:

> Hey Mark,
> Mine is using with_items as well; i think that's the common thread here.
>  Specifically the task that seems to cause the exact traceback you see is
> as follows:
>
> - name: generate role groups
>   group_by:  key="{{ item }}"
>   with_items: all_roles
>
> and it throws this traceback:
>
> fatal: [waluat1] => Traceback (most recent call last):
>   File "/rbi/ansible/ansible/lib/ansible/runner/__init__.py", line 532, in
> _executor
>     exec_rc = self._executor_internal(host, new_stdin)
>   File "/rbi/ansible/ansible/lib/ansible/runner/__init__.py", line 654, in
> _executor_internal
>     complex_args=complex_args
>   File "/rbi/ansible/ansible/lib/ansible/runner/__init__.py", line 809, in
> _executor_internal_inner
>     result = handler.run(conn, tmp, module_name, module_args, inject,
> complex_args)
>   File
> "/rbi/ansible/ansible/lib/ansible/runner/action_plugins/group_by.py", line
> 86, in run
>     del self.runner.inventory._vars_per_host[host]
> KeyError: 'waluat1'
>
> I will file something on github with a small example to reproduce.
>
> matt
>
>
>
> On Mon, Mar 24, 2014 at 3:31 PM, Mark Casey <[email protected]> wrote:
>
>> At the time I wasn't immediately able to test the newer version James
>> mentioned, and I worked around it soon after. So in short, no, I forgot to
>> file anything in this case (sorry!).
>>
>> How similar is your issue? (mainly curious if it is a host grouping
>> thing, or if you're just also iterating a built in structure with
>> with_items:)
>>
>> My normal "real" ec2 workflow expected Ansible to use a dynamic inventory
>> anyway, and I'd already parameter-ized that call to allow for different
>> inventory scripts in case I wanted to add rax support later. So what I
>> ended up doing to get by was get help on IRC to write a simple (basically
>> fake) dynamic inventory script for vagrant deploys that just prints out
>> "localhost", but already a member of the groups I needed. So it's pretty
>> much just a static inventory file in a format that is more convenient to
>> the situation.
>>
>> # vagrant.py
>>
>>> #!/usr/bin/env python
>>>
>>> print '{"db": {"hosts": ["localhost"], "vars": {"ansible_connection":
>>> "local"}}, "vagrant_dummy_group": {"hosts": ["localhost"], "vars":
>>> {"ansible_connection": "local"}}, "web": {"hosts": ["localhost"], "vars":
>>> {"ansible_connection": "local"}}}'
>>>
>>>
>>
>> Thanks,
>> Mark
>>
>>
>>
>> On Monday, March 24, 2014 1:58:12 PM UTC-5, Matt Coddington wrote:
>>
>>> Hi Mark/James,
>>> Do you guys know if there was a bug filed on this?  I'm running into a
>>> similar thing in 1.5.3.  If not i'll try and put together a minimal
>>> playbook to reproduce.
>>>
>>> thanks,
>>> matt
>>>
>>>
>>>
>>> On Tue, Feb 4, 2014 at 6:50 PM, James Tanner <[email protected]> wrote:
>>>
>>>> Please file a bug for any tracebacks you find. We would definitely like
>>>> to know if you can reproduce this on 1.4.4 or on the latest devel.
>>>>
>>>>
>>>> On Tue, Feb 4, 2014 at 6:46 PM, Mark Casey <[email protected]> wrote:
>>>>
>>>>> For what it's worth, I tried taking out the reference to group_names
>>>>> and instead passed into the role as a variable a list of group names to
>>>>> test with. I still got the traceback. It doesn't happen if I just 
>>>>> duplicate
>>>>> the task and use multiple copies of it that are even more hard coded such
>>>>> as: "{{ id }}_aStaticGroupName". Now the whole thing breaks horribly
>>>>> *past* that point because of the change, but the tracebacks stop.
>>>>>
>>>>> So AFAICT I get the traceback trying to use "{{ id }}_{{ item }}".
>>>>>
>>>>> Also I forgot to mention that I'm seeing this on v1.4.3.
>>>>>
>>>>> Thank you,
>>>>> Mark
>>>>>
>>>>>
>>>>> On Monday, February 3, 2014 4:01:14 PM UTC-6, Mark Casey wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I'm getting a traceback on a group_by, which is intended to create a
>>>>>> group named after each of a host's existing groups, prepended by a 
>>>>>> variable
>>>>>> that is being set with '-e' at invocation (a site/host-group ID):
>>>>>>
>>>>>> - name: vagrant | Create provider-agnostic ID_and_type group
>>>>>>>   group_by: key="{{ id }}_{{ item }}"
>>>>>>>   with_items: group_names
>>>>>>>   when: provider == "vagrant"
>>>>>>>
>>>>>>
>>>>>> The variable *provider* is also being set via '-e'. So for example,
>>>>>> a host that was part of the dns and mail groups would be added to groups
>>>>>> like prodSite1_dns and prodSite1_mail. These are not being set statically
>>>>>> in an inventory file because sometimes it is run on ec2 hosts and the
>>>>>> groups are pulled from tags, and sometimes it is run on a vagrant box and
>>>>>> the groups are written into an inventory script.
>>>>>>
>>>>>> Here is what I'm getting when running with -vvvv:
>>>>>>
>>>>>> TASK: [iaas_gather_multi | ec2 | Create provider-agnostic ID group]
>>>>>>> ***********
>>>>>>> skipping: [localhost]
>>>>>>>
>>>>>>> TASK: [iaas_gather_multi | ec2 | Create provider-agnostic type
>>>>>>> group] *********
>>>>>>> skipping: [localhost]
>>>>>>>
>>>>>>> TASK: [iaas_gather_multi | ec2 | Create provider-agnostic
>>>>>>> ID_and_type group] ***
>>>>>>> skipping: [localhost]
>>>>>>>
>>>>>>> TASK: [iaas_gather_multi | ec2 | Create provider-agnostic
>>>>>>> host-provisioned boolean] ***
>>>>>>> skipping: [localhost]
>>>>>>>
>>>>>>> TASK: [iaas_gather_multi | debug var=group_names]
>>>>>>> *****************************
>>>>>>> ok: [localhost] => {
>>>>>>>     "group_names": [
>>>>>>>         "db",
>>>>>>>         "webnode"
>>>>>>>     ],
>>>>>>>     "item": ""
>>>>>>> }
>>>>>>>
>>>>>>>  TASK: [iaas_gather_multi | vagrant | Create provider-agnostic
>>>>>>> ID_and_type group] ***
>>>>>>> created 'group_by' ActionModule: key={{id}}_{{item}}
>>>>>>> changed: [localhost] => (item=db) => {"changed": true, "groups":
>>>>>>> {"vagrant-devhost_db": ["localhost"]}, "item": "db"}
>>>>>>> created 'group_by' ActionModule: key={{id}}_{{item}}
>>>>>>> fatal: [localhost] => Traceback (most recent call last):
>>>>>>>   File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py",
>>>>>>> line 394, in _executor
>>>>>>>     exec_rc = self._executor_internal(host, new_stdin)
>>>>>>>   File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py",
>>>>>>> line 514, in _executor_internal
>>>>>>>     complex_args=complex_args
>>>>>>>   File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py",
>>>>>>> line 685, in _executor_internal_inner
>>>>>>>     result = handler.run(conn, tmp, module_name, module_args,
>>>>>>> inject, complex_args)
>>>>>>>   File 
>>>>>>> "/usr/lib/pymodules/python2.7/ansible/runner/action_plugins/group_by.py",
>>>>>>> line 86, in run
>>>>>>>     del self.runner.inventory._vars_per_host[host]
>>>>>>> KeyError: u'localhost'
>>>>>>>
>>>>>>>
>>>>>>> FATAL: all hosts have already failed -- aborting
>>>>>>>
>>>>>>
>>>>>> Thank you,
>>>>>> Mark
>>>>>>
>>>>>  --
>>>>> 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].
>>>>>
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>
>>>>  --
>>>> 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].
>>>>
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>  --
>> 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/6ea7d50b-64d9-426d-8542-041b07ddaed4%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/6ea7d50b-64d9-426d-8542-041b07ddaed4%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/CAMfrSce_vniTAT%2BgwwuGgWGO6kpWMRw-b63XFUpsTZXgSvRf2Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to