launch_instances.yml 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. ---
  2. # TODO: when we are ready to go to ansible 1.9+ support only, we can update to
  3. # the gce task to use the disk_auto_delete parameter to avoid having to delete
  4. # the disk as a separate step on termination
  5. - name: Launch instance(s)
  6. gce:
  7. instance_names: "{{ instances }}"
  8. machine_type: "{{ lookup('env', 'gce_machine_type') | default('n1-standard-1', true) }}"
  9. image: "{{ lookup('env', 'gce_machine_image') | default(deployment_vars[deployment_type].image, true) }}"
  10. service_account_email: "{{ lookup('env', 'gce_service_account_email_address') }}"
  11. pem_file: "{{ lookup('env', 'gce_service_account_pem_file_path') }}"
  12. project_id: "{{ lookup('env', 'gce_project_id') }}"
  13. tags:
  14. - created-by-{{ lookup('env', 'LOGNAME') |default(cluster, true) }}
  15. - env-{{ cluster }}
  16. - host-type-{{ type }}
  17. - env-host-type-{{ cluster }}-openshift-{{ type }}
  18. register: gce
  19. - name: Add new instances to groups and set variables needed
  20. add_host:
  21. hostname: "{{ item.name }}"
  22. ansible_ssh_host: "{{ item.public_ip }}"
  23. ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
  24. ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
  25. groups: "{{ item.tags | oo_prepend_strings_in_list('tag_') | join(',') }}"
  26. gce_public_ip: "{{ item.public_ip }}"
  27. gce_private_ip: "{{ item.private_ip }}"
  28. with_items: gce.instance_data
  29. - name: Wait for ssh
  30. wait_for: port=22 host={{ item.public_ip }}
  31. with_items: gce.instance_data
  32. - name: Wait for user setup
  33. command: "ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -o ConnectTimeout=10 -o UserKnownHostsFile=/dev/null {{ hostvars[item.name].ansible_ssh_user }}@{{ item.public_ip }} echo {{ hostvars[item.name].ansible_ssh_user }} user is setup"
  34. register: result
  35. until: result.rc == 0
  36. retries: 20
  37. delay: 10
  38. with_items: gce.instance_data