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 <[email protected] 
> <javascript:>> 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 <[email protected]> 
>>> 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 [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/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 [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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 [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/05341297-4a94-4b99-8d38-21609fb88f95%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to