1

我需要将单词 true 或 false 传递给 terraform 中的数据模板文件。但是,如果我尝试提供该值,由于插值语法,它会出现 0 或 1。我尝试按照https://www.terraform.io/docs/configuration/interpolation.html\\true\\中的建议进行操作,但是结果是,这显然是不正确的。与=相同\true\\\false\\\false\

更复杂的是,我还有一个场景,我需要将变量的值传递给它,它可以等于真或假。有任何想法吗?

# control whether to enable REST API and set other port defaults
data "template_file" "master_spark_defaults" {
  template = "${file("${path.module}/templates/spark/spark-    defaults.conf")}"

  vars = {
    spark_server_port   = "${var.application_port}"
    spark_driver_port   = "${var.spark_driver_port}"
    rest_port           = "${var.spark_master_rest_port}"
    history_server_port = "${var.history_server_port}"
    enable_rest         = "${var.spark_master_enable_rest}"
  }
}

var.spark_master_enable_rest可以是truefalse。我尝试将变量设置为,"\\${var.spark_master_enable_rest}\\"但这又导致\true\要么\false\

编辑1:

这是有问题的conf文件的相关部分:

spark.ui.port ${spark_server_port}
# set to default worker random number.
spark.driver.port ${spark_driver_port}

spark.history.fs.logDirectory /var/log/spark
spark.history.ui.port ${history_server_port}

spark.worker.cleanup.enabled true
spark.worker.cleanup.appDataTtl 86400

spark.master.rest.enabled ${enable_rest}
spark.master.rest.port ${rest_port}
4

2 回答 2

0

我认为你一定是想多了,如果我将我的 var 值设置为

spark_master_enable_rest="true"

然后我得到:

spark.worker.cleanup.enabled true
spark.worker.cleanup.appDataTtl 86400

spark.master.rest.enabled true

在我申请时的结果中。

于 2019-01-05T21:32:57.883 回答
0

我最终创建了一个 cloud-config 脚本来查找/替换文件中的 0/1:

  part {
    content_type = "text/x-shellscript"

    content = <<SCRIPT
    #!/bin/sh
    sed -i.bak -e '/spark.master.rest.enabled/s/0/false/' -e '/spark.master.rest.enabled/s/1/true/' /opt/spark/conf/spark-defaults.conf
SCRIPT
  }
于 2019-01-09T06:20:13.197 回答