Opened two github issues:
- https://github.com/ansible/ansible/issues/8131 - https://github.com/ansible/ansible/issues/8132 On Monday, July 14, 2014 3:09:21 PM UTC-4, Michael DeHaan wrote: > > Yep, I think we'd be open to that. > > > > > On Mon, Jul 14, 2014 at 1:07 PM, Kurt Yoder <[email protected] > <javascript:>> wrote: > >> 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 <[email protected]> >>>> 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]. >>>>> 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/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] <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/a1fc1c1c-a6ca-42ab-8296-a83bf447d2c2%40googlegroups.com >> >> <https://groups.google.com/d/msgid/ansible-project/a1fc1c1c-a6ca-42ab-8296-a83bf447d2c2%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/21bb9dba-6dc6-4ad6-95ed-8a99898ac953%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
