Hmm... So if I try to replicate this using the debug output of allTags
directly I'm not able to provoke an error.  Here's my playbook:

---
- hosts: localhost
  vars:
    allTags:
      changed: false
      invocation:
        module_args: "resource=i-be204f6e region=us-east-1 state=list"
        module_name: "ec2_tag"
      play: "setup.yml"
      role: null
      state: "ok"
      tags:
        Name: "analytics-storm-temp - storm1"
        environment: "dev"
        "opsworks:instance": "storm1"
        "opsworks:layer:storm": "storm"
        "opsworks:stack": "analytics-storm-temp"
        role: "storm"
  tasks:
  - debug:
      var: allTags.tags
  - group_by: key={{ allTags.tags.environment }}

And the output:

$ ansible-playbook tag.yml                               [devel]  (10:18:12)

PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [debug ] ****************************************************************
ok: [localhost] => {
    "var": {
        "allTags.tags": {
            "Name": "analytics-storm-temp - storm1",
            "environment": "dev",
            "opsworks:instance": "storm1",
            "opsworks:layer:storm": "storm",
            "opsworks:stack": "analytics-storm-temp",
            "role": "storm"
        }
    }
}

TASK: [group_by key={{ allTags.tags.environment }}] ***************************
changed: [localhost]

PLAY RECAP ********************************************************************
localhost                  : ok=3    changed=1    unreachable=0    failed=0


If you can see anything about that test that's not applicable to your
environment, let me know....

Another option might be that the error is occuring in the group_by
call but the data isn't coming from allTags.tags.

If you do a different group_by does that also cause this same error?
For instance, taking an example from the documentation:

-  group_by: key=machine_{{ ansible_machine }}


-Toshio

On Fri, May 29, 2015 at 9:24 AM, Andres Silva <[email protected]> wrote:
> Hi Toshio. Thanks a lot for the reply. Here is the debug output of what is
> being returned. Thanks in advance
>
> TASK: [debug var=allTags]
> *****************************************************
> ok: [localhost] => {
>     "var": {
>         "allTags": {
>             "changed": false,
>             "invocation": {
>                 "module_args": "resource=i-be204f6e region=us-east-1
> state=list",
>                 "module_name": "ec2_tag"
>             },
>             "play": "setup.yml",
>             "role": null,
>             "state": "ok",
>             "tags": {
>                 "Name": "analytics-storm-temp - storm1",
>                 "environment": "dev",
>                 "opsworks:instance": "storm1",
>                 "opsworks:layer:storm": "storm",
>                 "opsworks:stack": "analytics-storm-temp",
>                 "role": "storm"
>             },
>             "task": "get environment tag"
>         }
>     }
> }
>
> On Fri, May 29, 2015 at 12:14 PM, Toshio Kuratomi <[email protected]>
> wrote:
>>
>> I'd be interested to know how that character is getting in there and
>> what you expect it to be.  u'\x99' seems to be a c1 control character
>> so it's probably not something that jinja should be expected to
>> handle.  But the character might originally be a byte in an encoding
>> that was unexpected that was mangled in the decoding process.  Need
>> more information about what is being returned as your tags to figure
>> this out.
>>
>> -Toshio
>>
>> On Fri, May 29, 2015 at 6:05 AM, Andres Silva <[email protected]> wrote:
>> > Im running some Ansible playbooks on ec2 instances created by OpsWorks.
>> > Part
>> > of the automation reads the ec2 tags from the instance. here is the code
>> > for
>> > that
>> >
>> >       - name: gather ec2 facts
>> >         action: ec2_facts
>> >
>> >       - name: get environment tag
>> >         action: ec2_tag resource={{ ansible_ec2_instance_id }} region={{
>> > ansible_ec2_placement_region }} state=list
>> >         register: allTags
>> >
>> > Using that information I then do a group by using one of the tags. The
>> > main
>> > reason to do this is to leverage group_vars and do automation that
>> > configures settings differently for environments. In this case the tag
>> > name
>> > is environment. Code below
>> >
>> > - group_by: key={{ allTags.tags.environment }}
>> >
>> > All this worked perfectly in Ansible 1.7. But after 1.8 the playbook
>> > fails
>> > with the following error. Is intersting to note that the automation
>> > works
>> > fine with instances that are not spun up by OpsWorks. OpsWorks does add
>> > some
>> > special tags to the instance. My suspicion is that some of those tags
>> > have
>> > special characters that are causing some sort of unicode issue.
>> >
>> > TASK: [group_by key={{ allTags.tags.environment }}]
>> > ***************************
>> > fatal: [localhost] => template error while templating string: unexpected
>> > char u'\x99' at 2600
>> >
>> > I've tried using quotes in the group_by like this but with the same
>> > result
>> >
>> > - group_by: key="{{ allTags.tags.environment }}"
>> >
>> > I also tried using a different way of referencing the dictionary value
>> > like
>> > this
>> >
>> > - group_by: key={{ allTags['tags']['environment'] }}
>> >
>> > But had the same results
>> >
>> > I tried the recommendation on this thread
>> >
>> > https://groups.google.com/forum/#!msg/ansible-project/mLgdORSFspo/PXfO76QNfMMJ
>> > but still the same issue.
>> >
>> > From what I've read there are some changes in Jinja that cause this
>> > behaviour but I have not been able to figure out the issue. Anyone has
>> > seen
>> > this issue or has some recommendations? Thanks in advance
>> >
>> >
>> > --
>> > 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/1c943a6b-e424-4443-8d17-eb1f954e97f9%40googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Ansible Project" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/ansible-project/FkW7sXLXoMw/unsubscribe.
>> To unsubscribe from this group and all its topics, 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/CAG9juEooeKUca%3De8njCNgL60fkiOdPHs21LDJjDJAugU5D9B%2Bw%40mail.gmail.com.
>> 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/CAK%3DcKUtyyJ0ReiFfaUhb5Zh6icFNtRw61UByfhXcNgGmUYR_Cw%40mail.gmail.com.
>
> 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/CAG9juErjPjC0Gkj4R7G8to1tUrdgsJtq-qi965FNL4mzQ24GnQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to