launch_instances.yml 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. - sub-host-type-{{ sub_host_type }}
  18. - env-host-type-{{ cluster }}-openshift-{{ type }}
  19. register: gce
  20. - name: Add new instances to groups and set variables needed
  21. add_host:
  22. hostname: "{{ item.name }}"
  23. ansible_ssh_host: "{{ item.public_ip }}"
  24. ansible_ssh_user: "{{ deployment_vars[deployment_type].ssh_user | default(ansible_ssh_user, true) }}"
  25. ansible_sudo: "{{ deployment_vars[deployment_type].sudo }}"
  26. groups: "{{ item.tags | oo_prepend_strings_in_list('tag_') | join(',') }}"
  27. gce_public_ip: "{{ item.public_ip }}"
  28. gce_private_ip: "{{ item.private_ip }}"
  29. with_items: gce.instance_data
  30. - name: Wait for ssh
  31. wait_for: port=22 host={{ item.public_ip }}
  32. with_items: gce.instance_data
  33. - name: Wait for user setup
  34. 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"
  35. register: result
  36. until: result.rc == 0
  37. retries: 20
  38. delay: 10
  39. with_items: gce.instance_data