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] > <javascript:>> 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] <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/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. For more options, visit https://groups.google.com/d/optout.
