在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之上启动一个docker容器。 通过上面的代码,上面的操作按预期开始。

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

templatefile函数可以正常工作,并生成预期的yaml文件。 但是,在容器ENVOY_CONfig内会丢失所有缩进。

我尝试使用yamlencode,但它也不起作用。

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)