You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

80 lines
2.7 KiB

  1. ---
  2. - hosts: localhost
  3. become: false
  4. gather_facts: no
  5. vars:
  6. cloud_machine_type: g1-small
  7. mode: default
  8. preemptible: no
  9. ci_job_name: "{{ lookup('env', 'CI_JOB_NAME') }}"
  10. delete_group_vars: no
  11. tasks:
  12. - name: include vars for test {{ ci_job_name }}
  13. include_vars: "../files/{{ ci_job_name }}.yml"
  14. - name: replace_test_id
  15. set_fact:
  16. test_name: "{{test_id |regex_replace('\\.', '-')}}"
  17. - set_fact:
  18. instance_names: >-
  19. {%- if mode in ['separate', 'separate-scale', 'ha', 'ha-scale'] -%}
  20. k8s-{{test_name}}-1,k8s-{{test_name}}-2,k8s-{{test_name}}-3
  21. {%- elif mode == 'aio' -%}
  22. k8s-{{test_name}}-1
  23. {%- else -%}
  24. k8s-{{test_name}}-1,k8s-{{test_name}}-2
  25. {%- endif -%}
  26. - name: Create gce instances
  27. gce:
  28. instance_names: "{{instance_names}}"
  29. machine_type: "{{ cloud_machine_type }}"
  30. image: "{{ cloud_image | default(omit) }}"
  31. image_family: "{{ cloud_image_family | default(omit) }}"
  32. preemptible: "{{ preemptible }}"
  33. service_account_email: "{{ gce_service_account_email }}"
  34. pem_file: "{{ gce_pem_file | default(omit)}}"
  35. credentials_file: "{{gce_credentials_file | default(omit)}}"
  36. project_id: "{{ gce_project_id }}"
  37. zone: "{{cloud_region}}"
  38. metadata: '{"test_id": "{{test_id}}", "network": "{{kube_network_plugin}}", "startup-script": "{{startup_script|default("")}}"}'
  39. tags: "build-{{test_name}},{{kube_network_plugin}}"
  40. ip_forward: yes
  41. service_account_permissions: ['compute-rw']
  42. register: gce
  43. - name: Add instances to host group
  44. add_host: hostname={{item.public_ip}} groupname="waitfor_hosts"
  45. with_items: '{{gce.instance_data}}'
  46. - name: Template the inventory
  47. template:
  48. src: ../templates/inventory-gce.j2
  49. dest: "{{ inventory_path }}"
  50. - name: Make group_vars directory
  51. file:
  52. path: "{{ inventory_path|dirname }}/group_vars"
  53. state: directory
  54. when: mode in ['scale', 'separate-scale', 'ha-scale']
  55. - name: Template fake hosts group vars
  56. template:
  57. src: ../templates/fake_hosts.yml.j2
  58. dest: "{{ inventory_path|dirname }}/group_vars/fake_hosts.yml"
  59. when: mode in ['scale', 'separate-scale', 'ha-scale']
  60. - name: Delete group_vars directory
  61. file:
  62. path: "{{ inventory_path|dirname }}/group_vars"
  63. state: absent
  64. recurse: yes
  65. when: delete_group_vars
  66. - name: Wait for instances
  67. hosts: "waitfor_hosts"
  68. gather_facts: false
  69. tasks:
  70. - name: Wait for SSH to come up.
  71. local_action: wait_for host={{inventory_hostname}} port=22 delay=60 timeout=240 state=started