25

I am declaring a google_logging_metric resource in Terraform (using version 0.11.14)

I have the following declaration

resource "google_logging_metric" "my_metric" {
  description = "Check for logs of some cron job\t"
  name        = "mycj-logs"
  filter      = "resource.type=\"k8s_container\" AND resource.labels.cluster_name=\"${local.k8s_name}\" AND resource.labels.namespace_name=\"workable\" AND resource.labels.container_name=\"mycontainer-cronjob\" \nresource.labels.pod_name:\"my-pod\""
  project     = "${data.terraform_remote_state.gke_k8s_env.project_id}"

  metric_descriptor {
    metric_kind = "DELTA"
    value_type  = "INT64"
  }
}

Is there a way to make the filter field multiline?

The existence of the local variable "${local.k8s_name} makes it a bit challenging.

gsb22
  • 2,112
  • 2
  • 10
  • 25
pkaramol
  • 16,451
  • 43
  • 149
  • 324

2 Answers2

31

From the docs

String values are simple and represent a basic key to value mapping where the key is the variable name. An example is:

variable "key" {
  type    = "string"
  default = "value"
}

A multi-line string value can be provided using heredoc syntax.

variable "long_key" {
  type = "string"
  default = <<EOF
This is a long key.
Running over several lines.
EOF
}
Liam
  • 27,717
  • 28
  • 128
  • 190
1

This has changed as of mid-2022. The heredoc syntax has been changed to:

<<EOT/<<-EOT 
... 
EOT

per Hashicorp documentation: https://developer.hashicorp.com/terraform/language/expressions/strings

^^^ Find 'heredoc strings'

The previous answer's example should now be:

variable "long_key" {
  type = string
  default = <<EOT
This is a long key.
Running over several lines.
EOT
}
Anthony Miller
  • 15,101
  • 28
  • 69
  • 98