2016-02-10 18:51:39 +08:00
|
|
|
---
|
2023-07-26 22:36:22 +08:00
|
|
|
- name: Provision Google Cloud VMs
|
|
|
|
hosts: localhost
|
2016-10-28 20:56:48 +08:00
|
|
|
become: false
|
2016-02-10 18:51:39 +08:00
|
|
|
gather_facts: no
|
|
|
|
vars:
|
2016-12-27 20:16:34 +08:00
|
|
|
cloud_machine_type: g1-small
|
2016-12-15 00:00:38 +08:00
|
|
|
mode: default
|
2017-10-05 23:52:28 +08:00
|
|
|
preemptible: no
|
2017-10-19 00:28:54 +08:00
|
|
|
ci_job_name: "{{ lookup('env', 'CI_JOB_NAME') }}"
|
2018-02-12 19:38:06 +08:00
|
|
|
delete_group_vars: no
|
2016-02-10 18:51:39 +08:00
|
|
|
tasks:
|
2023-07-26 22:36:22 +08:00
|
|
|
- name: Include vars for test {{ ci_job_name }}
|
2017-10-19 00:28:54 +08:00
|
|
|
include_vars: "../files/{{ ci_job_name }}.yml"
|
|
|
|
|
2023-07-26 22:36:22 +08:00
|
|
|
- name: Replace_test_id
|
2016-02-10 18:51:39 +08:00
|
|
|
set_fact:
|
2023-07-05 11:36:54 +08:00
|
|
|
test_name: "{{ test_id | regex_replace('\\.', '-') }}"
|
2016-02-10 18:51:39 +08:00
|
|
|
|
2023-07-26 22:36:22 +08:00
|
|
|
- name: Set instance names
|
2019-05-16 15:27:43 +08:00
|
|
|
set_fact:
|
2023-07-05 11:36:54 +08:00
|
|
|
# noqa: jinja[spacing]
|
2016-12-15 00:00:38 +08:00
|
|
|
instance_names: >-
|
2017-02-13 19:13:28 +08:00
|
|
|
{%- if mode in ['separate', 'separate-scale', 'ha', 'ha-scale'] -%}
|
2019-05-03 05:24:21 +08:00
|
|
|
k8s-{{ test_name }}-1,k8s-{{ test_name }}-2,k8s-{{ test_name }}-3
|
2017-09-16 05:28:37 +08:00
|
|
|
{%- elif mode == 'aio' -%}
|
2019-05-03 05:24:21 +08:00
|
|
|
k8s-{{ test_name }}-1
|
2016-12-15 00:00:38 +08:00
|
|
|
{%- else -%}
|
2019-05-03 05:24:21 +08:00
|
|
|
k8s-{{ test_name }}-1,k8s-{{ test_name }}-2
|
2016-12-15 00:00:38 +08:00
|
|
|
{%- endif -%}
|
|
|
|
|
2016-02-10 18:51:39 +08:00
|
|
|
- name: Create gce instances
|
2023-06-30 17:51:57 +08:00
|
|
|
google.cloud.gcp_compute_instance: # noqa args[module] - Probably doesn't work
|
2019-05-03 05:24:21 +08:00
|
|
|
instance_names: "{{ instance_names }}"
|
2016-02-10 18:51:39 +08:00
|
|
|
machine_type: "{{ cloud_machine_type }}"
|
2017-10-25 18:45:54 +08:00
|
|
|
image: "{{ cloud_image | default(omit) }}"
|
|
|
|
image_family: "{{ cloud_image_family | default(omit) }}"
|
2017-10-05 23:52:28 +08:00
|
|
|
preemptible: "{{ preemptible }}"
|
2016-02-10 18:51:39 +08:00
|
|
|
service_account_email: "{{ gce_service_account_email }}"
|
2019-05-03 05:24:21 +08:00
|
|
|
pem_file: "{{ gce_pem_file | default(omit) }}"
|
|
|
|
credentials_file: "{{ gce_credentials_file | default(omit) }}"
|
2016-02-10 18:51:39 +08:00
|
|
|
project_id: "{{ gce_project_id }}"
|
2019-05-03 05:24:21 +08:00
|
|
|
zone: "{{ cloud_region }}"
|
2023-07-05 11:36:54 +08:00
|
|
|
metadata: '{"test_id": "{{ test_id }}", "network": "{{ kube_network_plugin }}", "startup-script": "{{ startup_script | default("") }}"}'
|
2019-05-03 05:24:21 +08:00
|
|
|
tags: "build-{{ test_name }},{{ kube_network_plugin }}"
|
2017-10-05 23:52:28 +08:00
|
|
|
ip_forward: yes
|
|
|
|
service_account_permissions: ['compute-rw']
|
2016-02-10 18:51:39 +08:00
|
|
|
register: gce
|
|
|
|
|
2017-09-10 04:41:31 +08:00
|
|
|
- name: Add instances to host group
|
2023-06-26 18:15:45 +08:00
|
|
|
add_host:
|
|
|
|
hostname: "{{ item.public_ip }}"
|
|
|
|
groupname: "waitfor_hosts"
|
2019-05-03 05:24:21 +08:00
|
|
|
with_items: '{{ gce.instance_data }}'
|
2017-09-10 04:41:31 +08:00
|
|
|
|
2023-06-30 17:51:57 +08:00
|
|
|
- name: Template the inventory # noqa no-relative-paths - CI inventory templates are not in role_path
|
2016-02-10 18:51:39 +08:00
|
|
|
template:
|
|
|
|
src: ../templates/inventory-gce.j2
|
|
|
|
dest: "{{ inventory_path }}"
|
2021-07-12 15:00:47 +08:00
|
|
|
mode: 0644
|
2016-02-10 18:51:39 +08:00
|
|
|
|
2017-02-13 19:13:28 +08:00
|
|
|
- name: Make group_vars directory
|
|
|
|
file:
|
2023-07-05 11:36:54 +08:00
|
|
|
path: "{{ inventory_path | dirname }}/group_vars"
|
2017-02-13 19:13:28 +08:00
|
|
|
state: directory
|
2021-07-12 15:00:47 +08:00
|
|
|
mode: 0755
|
2017-02-13 19:13:28 +08:00
|
|
|
when: mode in ['scale', 'separate-scale', 'ha-scale']
|
|
|
|
|
2023-06-30 17:51:57 +08:00
|
|
|
- name: Template fake hosts group vars # noqa no-relative-paths - CI templates are not in role_path
|
2017-02-13 19:13:28 +08:00
|
|
|
template:
|
|
|
|
src: ../templates/fake_hosts.yml.j2
|
2023-07-05 11:36:54 +08:00
|
|
|
dest: "{{ inventory_path | dirname }}/group_vars/fake_hosts.yml"
|
2021-07-12 15:00:47 +08:00
|
|
|
mode: 0644
|
2017-02-13 19:13:28 +08:00
|
|
|
when: mode in ['scale', 'separate-scale', 'ha-scale']
|
|
|
|
|
2018-02-12 19:38:06 +08:00
|
|
|
- name: Delete group_vars directory
|
|
|
|
file:
|
2023-07-05 11:36:54 +08:00
|
|
|
path: "{{ inventory_path | dirname }}/group_vars"
|
2018-02-12 19:38:06 +08:00
|
|
|
state: absent
|
|
|
|
recurse: yes
|
|
|
|
when: delete_group_vars
|