To answer your other question about neutron: I use "quantum_floating_ip" to 
assign IPs on Openstack.

It would be very useful if these API calls could also be parallelized. I 
imagine a lot more time would be spent on 100 serial API calls than doing 
them in parallel.

-Kurt

On Monday, July 14, 2014 10:16:13 AM UTC-4, Kurt Yoder wrote:
>
> There's an undocumented min_count and max_count option in 
> python-novaclient ServerManager.create() which looks like what you want [1].
>
> -Kurt
>
>
> [1] 
> https://github.com/openstack/python-novaclient/blob/cc7364067f995bd952149cd172cebf083fe4dc99/novaclient/v3/servers.py#L427
>
>
> On Friday, July 11, 2014 9:50:10 PM UTC-4, Michael DeHaan wrote:
>>
>> "So should I make a custom module which loops over nova_compute 
>> asynchronously, and also assigns floating IPs?"
>>
>> I'd first rather know where the openstack API allows simultaneous 
>> creation of N virtual machines of the same image type.
>>
>> I expect the floating IP stuff is fast and a usual with_items loop isn't 
>> a problem there, once those guests exist.
>>
>> (Using neutron, I assume?)
>>
>>
>> On Fri, Jul 11, 2014 at 6:54 PM, Kurt Yoder <kyo...@data-tactics.com> 
>> wrote:
>>
>>> So should I make a custom module which loops over nova_compute 
>>> asynchronously, and also assigns floating IPs?
>>>
>>> Would such a module be useful to the wider community, or is it too 
>>> specialized to contribute back?
>>>
>>> On Friday, July 11, 2014 6:34:47 PM UTC-4, Michael DeHaan wrote:
>>>
>>>> So some of the provisioning modules, like AWS in particular, support 
>>>> spinning up "N" modules at a time by passing "count" or "exact_count".
>>>>
>>>> Rackspace I believe does this with manual looping (for now), but I 
>>>> could be wrong and that might have just been historical truth.
>>>>
>>>> If the OpenStack API says we can launch 10 at once, it could be made to 
>>>> do similar things.
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Jul 11, 2014 at 5:28 PM, Kurt Yoder <kyo...@data-tactics.com> 
>>>> wrote:
>>>>
>>>>> I guess that error is because I put a "with_items" in there.
>>>>>
>>>>> How does everyone else do this? I don't understand how to loop 
>>>>> asynchronously. See pseudo-code:
>>>>>
>>>>> < start all 5 at once: >
>>>>>    < start up openstack host >
>>>>>    < assign it a floating ip >
>>>>>    < capture the floating ip >
>>>>> < end when all 5 have a floating ip >
>>>>> < wait for all 5 floating IPs to have an open SSH port >
>>>>>
>>>>> On Friday, July 11, 2014 5:20:34 PM UTC-4, Kurt Yoder wrote:
>>>>>>
>>>>>> Well, "async" is totally a bust. I got a message:
>>>>>>
>>>>>> fatal: [localhost] => lookup plugins (with_*) cannot be used with 
>>>>>> async tasks
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Thursday, July 10, 2014 6:17:48 PM UTC-4, Kurt Yoder wrote:
>>>>>>>
>>>>>>> Hello list,
>>>>>>>
>>>>>>> I anticipate provisioning 10-20 VMs using Ansible, then assigning 
>>>>>>> floating IPs to each, then waiting for SSH to become available for each 
>>>>>>> VM. 
>>>>>>> I would like to do this in parallel instead of serially. Specifically:
>>>>>>>
>>>>>>>
>>>>>>>    - Start the VMs, but don't block
>>>>>>>    - Assign the IPs, but don't block
>>>>>>>    - Wait on SSH until all VMs respond
>>>>>>>
>>>>>>>
>>>>>>> I saw the nova_compute "wait: 'no'" option, but when I use it I get 
>>>>>>> a stack trace:
>>>>>>>
>>>>>>> failed: [localhost] => (item=1) => {"failed": true, "item": 1, 
>>>>>>>> "parsed": false}
>>>>>>>> invalid output was: Traceback (most recent call last):
>>>>>>>>   File 
>>>>>>>> "/home/ubuntu/.ansible/tmp/ansible-tmp-1405028178.0-234314980043958/nova_compute",
>>>>>>>>  
>>>>>>>> line 1490, in <module>
>>>>>>>>     main()
>>>>>>>>   File 
>>>>>>>> "/home/ubuntu/.ansible/tmp/ansible-tmp-1405028178.0-234314980043958/nova_compute",
>>>>>>>>  
>>>>>>>> line 266, in main
>>>>>>>>     _create_server(module, nova)
>>>>>>>>   File 
>>>>>>>> "/home/ubuntu/.ansible/tmp/ansible-tmp-1405028178.0-234314980043958/nova_compute",
>>>>>>>>  
>>>>>>>> line 194, in _create_server
>>>>>>>>     private = [ x['addr'] for x in getattr(server, 
>>>>>>>> 'addresses').itervalues().next() if x['OS-EXT-IPS:type'] == 
>>>>>>>> 'fixed']
>>>>>>>> StopIteration
>>>>>>>>
>>>>>>>
>>>>>>> Perhaps I'm using it incorrectly:
>>>>>>>
>>>>>>> - name: Launch cluster VM on Openstack
>>>>>>>>   nova_compute:
>>>>>>>>     name: "{{ os_username }}_cluster1"
>>>>>>>>     state: present
>>>>>>>>     login_username: "{{ os_username }}"
>>>>>>>>     login_tenant_name: "{{ os_tenant }}"
>>>>>>>>     login_password: "{{ os_password }}"
>>>>>>>>     image_id: "{{ os_image_id }}"
>>>>>>>>     key_name: "{{ os_username }}_controller_key"
>>>>>>>>     wait: "no"
>>>>>>>>     flavor_id: "{{ os_flavor_id }}"
>>>>>>>>     auth_url: "{{ os_url }}"
>>>>>>>>     user_data: "#cloud-config\nmanage_etc_hosts: true"
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> So, two questions:
>>>>>>>
>>>>>>>
>>>>>>>    1. Am I using "wait" correctly?
>>>>>>>    2. Should I use "wait" to get to my desired parallel VM launch, 
>>>>>>>    as described above, or should I use something else, e.g. "async"? 
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> -Kurt
>>>>>>>
>>>>>>  -- 
>>>>> 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 ansible-proje...@googlegroups.com.
>>>>> To post to this group, send email to ansible...@googlegroups.com.
>>>>> To view this discussion on the web visit https://groups.google.com/d/
>>>>> msgid/ansible-project/32b58cdf-17cd-42c9-8ef6-
>>>>> dc90327e989a%40googlegroups.com 
>>>>> <https://groups.google.com/d/msgid/ansible-project/32b58cdf-17cd-42c9-8ef6-dc90327e989a%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 ansible-proje...@googlegroups.com.
>>> To post to this group, send email to ansible...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/ansible-project/2326c06a-dec5-43b2-bd22-bb6856d14227%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/ansible-project/2326c06a-dec5-43b2-bd22-bb6856d14227%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 ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/a1fc1c1c-a6ca-42ab-8296-a83bf447d2c2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to