diff --git a/ansible/ci/group_vars/all.yml b/ansible/ci/group_vars/all.yml index 02bb350a7c..52de5d9923 100644 --- a/ansible/ci/group_vars/all.yml +++ b/ansible/ci/group_vars/all.yml @@ -7,7 +7,6 @@ gcp_instance_prefix: ci gcp_available_zones: - us-central1-a - us-central1-b - - us-central1-c - us-central1-f ansible_user: runner gcp_network_name: collector-ci diff --git a/ansible/dev/group_vars/all.yml b/ansible/dev/group_vars/all.yml index 51d7910f71..057085fe47 100644 --- a/ansible/dev/group_vars/all.yml +++ b/ansible/dev/group_vars/all.yml @@ -8,7 +8,6 @@ gcp_instance_prefix: "{{ lookup('env', 'USER') }}-dev" gcp_available_zones: - us-central1-a - us-central1-b - - us-central1-c - us-central1-f ansible_user: "{{ lookup('env', 'USER') }}" gcp_network_name: default diff --git a/ansible/roles/create-vm/tasks/create-gcp-instance.yml b/ansible/roles/create-vm/tasks/create-gcp-instance.yml new file mode 100644 index 0000000000..64d6dec5a8 --- /dev/null +++ b/ansible/roles/create-vm/tasks/create-gcp-instance.yml @@ -0,0 +1,34 @@ +--- +- name: Safely create GCP compute instance + block: + - name: Create compute instance + google.cloud.gcp_compute_instance: + name: "{{ vm_name }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_auth_kind }}" + service_account_file: "{{ gcp_service_account_file }}" + zone: "{{ gcp_zone }}" + machine_type: "{{ vm_machine_type | default('e2-standard-2') }}" + disks: + - auto_delete: true + boot: true + initialize_params: + disk_size_gb: "{{ vm_disk_size | default(20) }}" + source_image: "{{ gcp_source_image }}" + network_interfaces: + - network: "{{ network }}" + access_configs: + - name: External NAT + type: ONE_TO_ONE_NAT + labels: "{{ gcp_default_labels | combine(gcp_extra_labels) }}" + metadata: "{{ gcp_meta_data | default({}) }}" + register: instance_result + rescue: + - name: Remove failed GCP compute instance + google.cloud.gcp_compute_instance: + name: "{{ vm_name }}" + project: "{{ gcp_project }}" + auth_kind: "{{ gcp_auth_kind }}" + service_account_file: "{{ gcp_service_account_file }}" + zone: "{{ gcp_zone }}" + state: absent diff --git a/ansible/roles/create-vm/tasks/create-gcp-vm.yml b/ansible/roles/create-vm/tasks/create-gcp-vm.yml index 90d4582a5e..e11cb87569 100644 --- a/ansible/roles/create-vm/tasks/create-gcp-vm.yml +++ b/ansible/roles/create-vm/tasks/create-gcp-vm.yml @@ -51,26 +51,8 @@ register: network - name: Create GCP VM - google.cloud.gcp_compute_instance: - name: "{{ vm_name }}" - project: "{{ gcp_project }}" - auth_kind: "{{ gcp_auth_kind }}" - service_account_file: "{{ gcp_service_account_file }}" - zone: "{{ gcp_zone }}" - machine_type: "{{ vm_machine_type | default('e2-standard-2') }}" - disks: - - auto_delete: true - boot: true - initialize_params: - disk_size_gb: "{{ vm_disk_size | default(20) }}" - source_image: "{{ gcp_source_image }}" - network_interfaces: - - network: "{{ network }}" - access_configs: - - name: External NAT - type: ONE_TO_ONE_NAT - labels: "{{ gcp_default_labels | combine(gcp_extra_labels) }}" - metadata: "{{ gcp_meta_data | default({}) }}" + ansible.builtin.include_tasks: + file: create-gcp-instance.yml # This looks like a lot, and its mostly because ansible support # for "breaking" from a loop is not all that great at the moment. @@ -80,9 +62,7 @@ loop: "{{ vm_available_zones }}" loop_control: loop_var: gcp_zone - register: instance_result when: > (vm_arch == "amd64" or vm_arch == "arm64") and not condition and excluded == false vars: condition: "{{ (instance_result | default({'changed': false})).changed }}" -