github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/tools/provisioning/gcp/main.tf (about)

     1  provider "google" {
     2    # Set the below environment variables:
     3    # - GOOGLE_CREDENTIALS
     4    # - GOOGLE_PROJECT
     5    # - GOOGLE_REGION
     6    # or configure directly below.
     7    # See also:
     8    # - https://www.terraform.io/docs/providers/google/
     9    # - https://console.cloud.google.com/apis/credentials/serviceaccountkey?project=<PROJECT ID>&authuser=1
    10    region = "${var.gcp_region}"
    11  
    12    project = "${var.gcp_project}"
    13  }
    14  
    15  resource "google_compute_instance" "tf_test_vm" {
    16    name         = "${var.name}-${count.index}"
    17    machine_type = "${var.gcp_size}"
    18    zone         = "${var.gcp_zone}"
    19    count        = "${var.num_hosts}"
    20  
    21    disk {
    22      image = "${var.gcp_image}"
    23    }
    24  
    25    tags = [
    26      "${var.app}",
    27      "${var.name}",
    28      "terraform",
    29    ]
    30  
    31    network_interface {
    32      network = "${var.gcp_network}"
    33  
    34      access_config {
    35        // Ephemeral IP
    36      }
    37    }
    38  
    39    metadata {
    40      ssh-keys = "${var.gcp_username}:${file("${var.gcp_public_key_path}")}"
    41    }
    42  
    43    # Wait for machine to be SSH-able:
    44    provisioner "remote-exec" {
    45      inline = ["exit"]
    46  
    47      connection {
    48        type        = "ssh"
    49        user        = "${var.gcp_username}"
    50        private_key = "${file("${var.gcp_private_key_path}")}"
    51      }
    52    }
    53  }
    54  
    55  resource "google_compute_firewall" "fw-allow-docker-and-weave" {
    56    name        = "${var.name}-allow-docker-and-weave"
    57    network     = "${var.gcp_network}"
    58    target_tags = ["${var.name}"]
    59  
    60    allow {
    61      protocol = "tcp"
    62      ports    = ["2375", "12375"]
    63    }
    64  
    65    source_ranges = ["${var.client_ip}"]
    66  }
    67  
    68  # Required for FastDP crypto in Weave Net:
    69  resource "google_compute_firewall" "fw-allow-esp" {
    70    name        = "${var.name}-allow-esp"
    71    network     = "${var.gcp_network}"
    72    target_tags = ["${var.name}"]
    73  
    74    allow {
    75      protocol = "esp"
    76    }
    77  
    78    source_ranges = ["${var.gcp_network_global_cidr}"]
    79  }
    80  
    81  # Required for WKS Kubernetes API server access
    82  resource "google_compute_firewall" "fw-allow-kube-apiserver" {
    83    name        = "${var.name}-allow-kube-apiserver"
    84    network     = "${var.gcp_network}"
    85    target_tags = ["${var.name}"]
    86  
    87    allow {
    88      protocol = "tcp"
    89      ports    = ["6443"]
    90    }
    91  
    92    source_ranges = ["${var.client_ip}"]
    93  }