gcp

The gcp connection can be used to access Google Cloud Platform resources.

connection "gcp" "gcp_def" {
connections = "~/.config/gcloud/my_connections.json"
}

Arguments

NameTypeRequired?Description
credentialsStringOptionalEither the path to a JSON credential file that contains Google application credentials or the contents of a service account key file in JSON format.
ttlNumberOptionalThe time, in seconds, to cache the connections. By default, the GP connection will be cached for 5 minutes.

All arguments are optional, and a gcp connection with no arguments will behave the same as the GCP default connection.

Attributes (Read-Only)

AttributeTypeDescription
access_tokenStringAn OAuth access token to use to authenticate to GCP.

Default Connection

The GCP connection type includes an implicit, default connection (connection.gcp.default) that will be configured using the same mechanism as the GCloud CLI (environment variables, config files, etc); the effective connections of this default are the same as if you run the gcloud command. Connections will be loaded from:

  • The path specified in the GOOGLE_APPLICATION_CONNECTIONS environment variable, if set; otherwise
  • The standard location (~/.config/gcloud/application_default_connections.json)

Examples

Static Connections from Connection File

connection "gcp" "gcp_def" {
connections = "~/.config/gcloud/my_connections.json"
}

Static Connections defined inline

connection "gcp_inline" {
#project = "my_project"
connections = <<EOC
{
"client_id": "blah-blah.apps.googleusercontent.com",
"client_secret": "d-blah",
"quota_project_id": "dev-aaa",
"refresh_token": "1//blah-blah",
"type": "authorized_user"
}
EOC
}

Using GCP Connections in Container Step

pipeline "gcp_test" {
param "connection" {
type = string
default = "default"
}
step "container" "get_instances" {
image = "gcr.io/google.com/cloudsdktool/google-cloud-cli"
cmd = ["gcloud", "compute", "instances", "list"]
env = {
CLOUDSDK_CORE_PROJECT = "my-project"
CLOUDSDK_AUTH_ACCESS_TOKEN = connections.gcp[param.connection].access_token
}
}
}

Using GCP Connections in HTTP Step

pipeline "gcp_test" {
param "connection" {
type = string
default = "default"
}
step "http" "get_instances" {
url = "https://compute.googleapis.com/compute/v1/projects/my-project/aggregated/instances"
request_headers = {
Content-Type = "application/json; charset=utf-8"
Authorization = "Bearer ${connections.gcp[param.connection].access_token}"
}
}
}