2022-01-03 19:36:51 +03:00
|
|
|
# Copyright (c) 2022 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
|
2021-01-27 19:38:34 +03:00
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
2021-12-06 22:41:11 +03:00
|
|
|
locals {
|
|
|
|
ubuntu = [
|
|
|
|
{
|
|
|
|
name = "ci-u1",
|
|
|
|
disk_size = 200,
|
2022-02-22 21:33:21 +03:00
|
|
|
size = 30,
|
2021-12-06 22:41:11 +03:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name = "ci-u2",
|
|
|
|
disk_size = 400,
|
2022-02-22 21:33:21 +03:00
|
|
|
size = 0,
|
2021-12-06 22:41:11 +03:00
|
|
|
},
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2021-01-27 19:38:34 +03:00
|
|
|
data "template_file" "vsts-agent-ubuntu_20_04-startup" {
|
2022-01-04 18:24:31 +03:00
|
|
|
count = length(local.ubuntu)
|
2021-02-08 20:25:04 +03:00
|
|
|
template = file("${path.module}/vsts_agent_ubuntu_20_04_startup.sh")
|
2021-01-27 19:38:34 +03:00
|
|
|
|
|
|
|
vars = {
|
2021-02-08 20:25:04 +03:00
|
|
|
vsts_token = secret_resource.vsts-token.value
|
2021-01-27 19:38:34 +03:00
|
|
|
vsts_account = "digitalasset"
|
|
|
|
vsts_pool = "ubuntu_20_04"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "google_compute_region_instance_group_manager" "vsts-agent-ubuntu_20_04" {
|
2021-12-06 22:41:11 +03:00
|
|
|
count = length(local.ubuntu)
|
2021-02-08 20:25:04 +03:00
|
|
|
provider = google-beta
|
2021-12-06 22:41:11 +03:00
|
|
|
name = local.ubuntu[count.index].name
|
|
|
|
base_instance_name = local.ubuntu[count.index].name
|
2021-01-27 19:38:34 +03:00
|
|
|
region = "us-east1"
|
2021-12-06 22:41:11 +03:00
|
|
|
target_size = local.ubuntu[count.index].size
|
2021-01-27 19:38:34 +03:00
|
|
|
|
|
|
|
version {
|
2021-12-06 22:41:11 +03:00
|
|
|
name = local.ubuntu[count.index].name
|
|
|
|
instance_template = google_compute_instance_template.vsts-agent-ubuntu_20_04[count.index].self_link
|
2021-01-27 19:38:34 +03:00
|
|
|
}
|
|
|
|
|
2021-06-22 11:43:08 +03:00
|
|
|
# uncomment when we get a provider >3.55
|
|
|
|
#distribution_policy_target_shape = "ANY"
|
|
|
|
|
2021-01-27 19:38:34 +03:00
|
|
|
update_policy {
|
|
|
|
type = "PROACTIVE"
|
|
|
|
minimal_action = "REPLACE"
|
|
|
|
max_surge_fixed = 3
|
|
|
|
min_ready_sec = 60
|
2021-06-22 11:43:08 +03:00
|
|
|
|
|
|
|
instance_redistribution_type = "NONE"
|
2021-01-27 19:38:34 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "google_compute_instance_template" "vsts-agent-ubuntu_20_04" {
|
2021-12-06 22:41:11 +03:00
|
|
|
count = length(local.ubuntu)
|
|
|
|
name_prefix = "${local.ubuntu[count.index].name}-"
|
2021-01-27 19:38:34 +03:00
|
|
|
machine_type = "c2-standard-8"
|
2021-02-08 20:25:04 +03:00
|
|
|
labels = local.machine-labels
|
2021-01-27 19:38:34 +03:00
|
|
|
|
|
|
|
disk {
|
2021-12-06 22:41:11 +03:00
|
|
|
disk_size_gb = local.ubuntu[count.index].disk_size
|
2021-01-27 19:38:34 +03:00
|
|
|
disk_type = "pd-ssd"
|
2022-06-08 17:08:23 +03:00
|
|
|
#TODO: when the image gets fixed, go back to auto-upgrading
|
|
|
|
#source_image = "ubuntu-os-cloud/ubuntu-2004-lts"
|
|
|
|
source_image = "ubuntu-os-cloud/ubuntu-2004-focal-v20220606"
|
2021-01-27 19:38:34 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
lifecycle {
|
|
|
|
create_before_destroy = true
|
|
|
|
}
|
|
|
|
|
2021-02-08 20:25:04 +03:00
|
|
|
metadata = {
|
2022-01-04 18:24:31 +03:00
|
|
|
startup-script = data.template_file.vsts-agent-ubuntu_20_04-startup[count.index].rendered
|
2021-01-27 19:38:34 +03:00
|
|
|
|
2022-01-31 17:46:59 +03:00
|
|
|
shutdown-script = nonsensitive("#!/usr/bin/env bash\nset -euo pipefail\ncd /home/vsts/agent\nsu vsts <<SHUTDOWN_AGENT\nexport VSTS_AGENT_INPUT_TOKEN='${secret_resource.vsts-token.value}'\n./config.sh remove --unattended --auth PAT\nSHUTDOWN_AGENT\n ")
|
2021-01-27 19:38:34 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
network_interface {
|
|
|
|
network = "default"
|
|
|
|
|
|
|
|
// Ephemeral IP to get access to the Internet
|
|
|
|
access_config {}
|
|
|
|
}
|
|
|
|
|
|
|
|
service_account {
|
|
|
|
email = "log-writer@da-dev-gcp-daml-language.iam.gserviceaccount.com"
|
|
|
|
scopes = ["cloud-platform"]
|
|
|
|
}
|
|
|
|
|
|
|
|
scheduling {
|
|
|
|
automatic_restart = false
|
|
|
|
on_host_maintenance = "TERMINATE"
|
|
|
|
preemptible = false
|
|
|
|
}
|
|
|
|
}
|