This is a quickstart for building something on Google Compute Engine without clicking any buttons (after you created the project).

Prerequisites

Install terraform:

$ brew install terraform

Install Google Cloud SDK:

$ brew cask install google-cloud-sdk

create a new project in the console and login

$ gcloud auth application-default login

If you are using IntelliJ IDEA, install the HashiCorp Terraform Plugin.

Option A: Import a project

If you have created a project using the console, create a config.tf with the basic settings:

provider "google" {
    region      = "eu-central-1"
}

resource "google_project" "project" {}

Now run terraform init to download the google provider plugin. Now import the project via

$ terraform import google_project.project project-id-186346

You now have a corresponding terraform.tfstate file that contains the name, billing account and other info about your project.

Option B: Create a new project from scratch

Make a new folder and create a config.tf file:

provider "google" {
  region      = "eu-central-1"
}

resource "google_project" "project" {
  name = "holisticon"
  project_id = "holisticon-123456"
  billing_account = "01B8C8-F33191-3DE337" // optional
}

Now run terraform init to download the google provider plugin. Next run terraform apply to create the project. Note that the project_id may not already exist. The billing_account is optional. Also you can only have a maximum of 12 projects at the same time.

Adding people

So far you are the owner of the new project. Now you can create IAM roles and add other people to your project:

resource "google_project_iam_binding" "project_editors" {
  project = "${google_project.project.project_id}"
  role = "roles/editor"
  members = [
    "user:nice.coworker@holisticon.de",
  ]
}

You can find a description of all roles here. Note that you cannot grant the owner role through the API but only using the Cloud Platform Console.