首页 > 解决方案 > 在 terraform 中读取文件并将其传递给 docker 容器时保留文件内容的缩进

问题描述

resource "google_compute_instance_template" "envoy_instance_template" {

  disk {
    source_image = "gce-uefi-images/cos-stable"
    disk_size_gb = var.disk_size
    disk_type    = var.disk_type
    boot         = true
  }

  metadata = {
    gce-container-declaration = yamlencode({
      apiVersion = "v1",
      kind       = "Pod",
      metadata = {
        name = "envoy"
      }
      spec = {
        containers = [{
          name            = "envoy",
          image           = "myimage",
          imagePullPolicy = "Always",
          ports = {
            containerPort = "443",
            hostPort      = "443",
          },
          env = [
            {
              name  = "ENVOY_CONFIG",
              value = templatefile("${path.module}/envoy.tmpl", 
                      { 
                        routes = var.envoy_config.routes
                        clusters = var.envoy_config.clusters
                      }),
            }
          ]
        }]
      }
    })
    google-logging-enabled = "TRUE"
    enable-oslogin         = "TRUE"
  }

我只是想在gce-uefi-images/cos-stable. 使用上面的代码,上面的代码按预期开始。

ENVOY_CONFIG但是,当容器启动时,换行符和缩进消失了。

templatefile功能正常工作并生成yaml预期的文件。但是,容器内部ENVOY_CONFIG会丢失所有缩进。

我尝试使用yamlencode,但它也没有工作。

在环境变量中保留 yaml 文件内容(缩进和换行符)的正确方法是什么ENVOY_CONFIG

标签: dockerterraform-provider-gcpterraform-template-file

解决方案


推荐阅读