github.com/atsaki/terraform@v0.4.3-0.20150919165407-25bba5967654/examples/google-two-tier/main.tf (about)

     1  # See https://cloud.google.com/compute/docs/load-balancing/network/example
     2  
     3  provider "google" {
     4    region = "${var.region}"
     5    project = "${var.project_name}"
     6    account_file = "${file(var.account_file_path)}"
     7  }
     8  
     9  resource "google_compute_http_health_check" "default" {
    10    name = "tf-www-basic-check"
    11    request_path = "/"
    12    check_interval_sec = 1
    13    healthy_threshold = 1
    14    unhealthy_threshold = 10
    15    timeout_sec = 1
    16  }
    17  
    18  resource "google_compute_target_pool" "default" {
    19    name = "tf-www-target-pool"
    20    instances = ["${google_compute_instance.www.*.self_link}"]
    21    health_checks = ["${google_compute_http_health_check.default.name}"]
    22  }
    23  
    24  resource "google_compute_forwarding_rule" "default" {
    25    name = "tf-www-forwarding-rule"
    26    target = "${google_compute_target_pool.default.self_link}"
    27    port_range = "80"
    28  }
    29  
    30  resource "google_compute_instance" "www" {
    31    count = 3
    32  
    33    name = "tf-www-${count.index}"
    34    machine_type = "n1-standard-1"
    35    zone = "${var.region_zone}"
    36    tags = ["www-node"]
    37  
    38    disk {
    39      image = "ubuntu-os-cloud/ubuntu-1204-precise-v20150625"
    40    }
    41  
    42    network_interface {
    43      network = "default"
    44      access_config {
    45          # Ephemeral
    46      }
    47    }
    48  
    49    metadata {
    50      sshKeys = "ubuntu:${file("~/.ssh/gcloud_id_rsa.pub")}"
    51      startup-script = <<SCRIPT
    52  apt-get -y update
    53  apt-get -y install nginx
    54  HOSTNAME=$(hostname | tr -d "\n")
    55  IP=$(curl -s -H "Metadata-Flavor:Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/ip)
    56  echo "Welcome to ${count.index} - $HOSTNAME ($IP)" > /usr/share/nginx/www/index.html
    57  service nginx start
    58  SCRIPT
    59    }
    60  
    61    service_account {
    62      scopes = ["https://www.googleapis.com/auth/compute.readonly"]
    63    }
    64  }
    65  
    66  resource "google_compute_firewall" "default" {
    67    name = "tf-www-firewall"
    68    network = "default"
    69  
    70    allow {
    71      protocol = "tcp"
    72      ports = ["80"]
    73    }
    74  
    75    source_ranges = ["0.0.0.0/0"]
    76    target_tags = ["www-node"]
    77  }