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.

Reply via email to