Try with csds_vpc.subnets[0].id

On Monday, 12 January 2015 01:05:22 UTC+1, Stefan Nietert wrote:
>
> When doing this I get:
>
> "One or more undefined variables: 'item' is undefined"
>
> It did work for you?
>
> On Thursday, September 25, 2014 at 4:34:25 AM UTC+2, Steven Ringo wrote:
>>
>> Hi,
>>
>> Try this:
>>
>>     - ec2_elb_lb:
>>       name: csds-elb-sydney-dev
>>       foo: bar
>>       subnets:
>>         - "{{ item.id }}"
>>       with_items:
>>         - "{{ csds_vpc.subnets }}"
>>       when: item.resource_tags['Tier'] == 'elb' and
>>             item.resource_tags['Application'] == 'MyApp'
>>
>>
>> It works, but feels hacky, alas.
>>
>> Steve
>>
>>
>> On Saturday, 6 September 2014 13:27:37 UTC+10, itarchmerc wrote:
>>>
>>> Rather than trying to do this with a one line jinja2 statement, could I 
>>> use with_items and when?  I tried this, but it generates an error.
>>>
>>> - name: create elb
>>>   local_action:
>>>     module: ec2_elb_lb
>>>     name: "elb1"
>>>     scheme: internet-facing
>>>     state: present
>>>     subnets: "{{ item.id }}"
>>>     security_group_ids: "{{ elb_sg.group_id }}"
>>>     region: us-east-1
>>>     listeners:
>>>       - protocol: http
>>>         load_balancer_port: 80
>>>         instance_port: 80
>>>   with_items: vpc.subnets
>>>   when: vpc.subnets.resource_tags.tier == 'elb'
>>>   register: elb
>>>
>>> I get this error:
>>>
>>> error while evaluating conditional: vpc.subnets.resource_tags.tier == 
>>> 'elb'
>>>
>>> I'm hoping this method can be used, but I'm not sure of the format for 
>>> the conditional.
>>>
>>> On Friday, September 5, 2014 5:34:18 PM UTC-4, itarchmerc wrote:
>>>>
>>>> OK....getting closer.  I had to upgrade Jinja2 to version 2.8-dev in 
>>>> order to get the equalto test.  Now the debug statement executes without 
>>>> error; however, this doesn't return the information I need.  The statement 
>>>> below gives me all resource_tags if the tier key equals "elb".  What I 
>>>> really need is the subnet id value if the resource_tag has the tier key 
>>>> equal to "elb".  I feel like another level of nesting is required.  Any 
>>>> ideas on how to get the subnet id?  Thank you James for all your help so 
>>>> far!
>>>>
>>>> "vpc": {
>>>>         "changed": false,
>>>>         "invocation": {
>>>>             "module_args": "",
>>>>             "module_name": "ec2_vpc"
>>>>         },
>>>>         "subnets": [
>>>>             {
>>>>                 "az": "us-east-1c",
>>>>                 "cidr": "10.0.0.x/26",
>>>>                 "id": "subnet-123456789",     -----> I need this value
>>>>                 "resource_tags": {
>>>>                     "Name": "elb1",
>>>>                     "tier": "elb"
>>>>                 }
>>>>             },
>>>>             {
>>>>                 "az": "us-east-1a",
>>>>                 "cidr": "10.0.0.x/26",
>>>>                 "id": "subnet-abcdefgh",      ----> and this
>>>>                 "resource_tags": {
>>>>                     "Name": "elb2",
>>>>                     "tier": "elb"
>>>>                  }
>>>>               }
>>>>
>>>> On Friday, September 5, 2014 4:07:04 PM UTC-4, James Cammarata wrote:
>>>>>
>>>>> You could use the selectattr() filter, however it looks like the 
>>>>> 'equalto' test is new (it doesn't work in my version of jinja2, which is 
>>>>> 2.7.x). But it would looks something like this:
>>>>>
>>>>>    - debug: msg="{{vpc.subnets | map(attribute='resource_tags') | 
>>>>> selectattr('tier', 'equalto', 'elb') | list}}"
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Sep 5, 2014 at 9:45 AM, itarchmerc <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> I got one step further.  Using this debug statement, I was able to 
>>>>>> get the list of resource_tags:
>>>>>>
>>>>>> debug: msg="{{vpc.subnets | map(attribute='resource_tags') | 
>>>>>> map(attribute='tier') | list}}"
>>>>>>
>>>>>> I'm not sure if this is the right way to go about getting this 
>>>>>> information, so please let me know if there is a better way.
>>>>>>
>>>>>> Unfortunately, I'm still having difficulty having the task only pull 
>>>>>> the subnet id for the subnets tagged as tier=elb.  Can I use something 
>>>>>> after the pipe instead of list to limit the results, or do I need to use 
>>>>>> with_items, with_dict?  Thanks.
>>>>>>
>>>>>> On Friday, September 5, 2014 8:32:02 AM UTC-4, itarchmerc wrote:
>>>>>>>
>>>>>>> That worked perfectly to get the list of subnets.  Thank you!
>>>>>>>
>>>>>>> The only issue I have now is limiting the returned values.  The 
>>>>>>> syntax below is returning all 6 subnets in my vpc, but I only want the 
>>>>>>> 2 
>>>>>>> subnets that I gave a resource tag of tier=elb.  I'm trying to use the 
>>>>>>> when 
>>>>>>> clause with the ec2_elb_lb module, but I can't get the syntax right 
>>>>>>> there. 
>>>>>>>  I tried:
>>>>>>>
>>>>>>> when: {{ vpc.subnets | map(attribute='tier') | list }} == 'elb'
>>>>>>>
>>>>>>> This generates a syntax error each time.  What should the format be 
>>>>>>> in a when clause and/or is this the right way to approach limiting the 
>>>>>>> results, or should I be using with_items or with_dict?  Thanks for the 
>>>>>>> help!
>>>>>>>
>>>>>>> On Thursday, September 4, 2014 11:14:53 PM UTC-4, James Cammarata 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi. From the look of the above, you're using the "complex args" 
>>>>>>>> structure to pass the params to the module. In this case, the list 
>>>>>>>> should 
>>>>>>>> not be a comma-separated list but should instead just be the array of 
>>>>>>>> IDs. 
>>>>>>>> For example:
>>>>>>>>
>>>>>>>> subnets: "{{vpc.subnets | map(attribute='id') | list}}"
>>>>>>>>
>>>>>>>> The syntax you're using above would work if you were instead using 
>>>>>>>> key=value parameters, ie: subnets="{{ vpc.subnets | join(',' 
>>>>>>>> attribute='id') }}"
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, Sep 4, 2014 at 2:41 PM, itarchmerc <[email protected]> 
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> I have a playbook that creates a VPC with multiple subnets which 
>>>>>>>>> works fine.  I then have a playbook that tries to create an ELB and I 
>>>>>>>>> need 
>>>>>>>>> to set the subnets to 2 of the subnets returned from the vpc 
>>>>>>>>> creation. 
>>>>>>>>>  There are 6 total subnets within the VPC, but two of them have 
>>>>>>>>> resource_tags set to tier:elb.  I only want the 2 subnets with those 
>>>>>>>>> tags.
>>>>>>>>>
>>>>>>>>> I saw a post <https://github.com/ansible/ansible/pull/7051> that 
>>>>>>>>> said the following would work, but I get an invalid subnet ID error.  
>>>>>>>>> (look 
>>>>>>>>> for the comments from @coop)
>>>>>>>>>
>>>>>>>>> subnets: "{{ vpc.subnets | join(',' attribute='id') }}"
>>>>>>>>>
>>>>>>>>> My playbook is almost exactly the same as @coop in the post above, 
>>>>>>>>> but I have 6 subnets instead of 1.  I feel like I should be able to 
>>>>>>>>> use 
>>>>>>>>> something like the above with a when clause to only get subnets 
>>>>>>>>> tagged as 
>>>>>>>>> elb.  Any help is appreciated.
>>>>>>>>>  
>>>>>>>>> -- 
>>>>>>>>> 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/
>>>>>>>>> a2e130f5-007e-49b3-965f-31810e866efa%40googlegroups.com 
>>>>>>>>> <https://groups.google.com/d/msgid/ansible-project/a2e130f5-007e-49b3-965f-31810e866efa%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/2d35fff9-9df6-4afc-b571-557af330677c%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/ansible-project/2d35fff9-9df6-4afc-b571-557af330677c%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/fc77cfb2-cb4a-4856-ab18-ac639e8cd1b0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to