Thanks James for the patch! I can verify that https://github.com/ansible/ansible/commit/dc658eaa1c636c47804bf70eddc55ada5e4078bf, when applied manually to 1.5.3 fixes my issues here!
matt On Mon, Mar 24, 2014 at 4:23 PM, Matt Coddington <[email protected]>wrote: > 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/CAMfrSccfnQKJTUmgYUh58wnJvq-2NyneOg_GBmZoDwwGBcN5Kw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
