在Terraform中使用多个USER_DATA文件 [英] Multiple user_data File use in Terraform

查看:27
本文介绍了在Terraform中使用多个USER_DATA文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为常见任务(如文件夹创建和某些软件包安装)创建一个通用的user_data文件,并为特定于应用程序的配置设置一个单独的user_data文件

我正在尝试以下选项-

user_data = "${data.template_file.userdata_common.rendered}", "${data.template_file.userdata_master.rendered}"

使用这些配置-

通用用户数据模板

data "template_file" "userdata_common" {
  template = "${file("${path.module}/userdata_common.sh")}"

  vars {
    "ALBTarget"          = "${var.ALBTarget}"
    "s3bucket"           = "${var.s3bucket}"
    "centrifydomain"     = "${lookup(var.centrifydomain, format("%s-%s", lower(var.env),var.region))}"
    "centrifyadgroup"    = "${lookup(var.centrifyadgroup, format("%s-%s", lower(var.env),var.region))}"
  }
}

特定于应用程序的配置

data "template_file" "userdata_master" {
  template = "${file("${path.module}/userdata_master.sh")}"

  vars {
    "ALBTarget"          = "${var.ALBTarget}"
    "s3bucket"           = "${var.s3bucket}"
    "centrifydomain"     = "${lookup(var.centrifydomain, format("%s-%s", lower(var.env),var.region))}"
    "centrifyadgroup"    = "${lookup(var.centrifyadgroup, format("%s-%s", lower(var.env),var.region))}"
  }
}

我执行计划时出现以下错误-

Failed to load root config module: Error parsing /terraform/main.tf: key ${data.template_file.userdata_common.rendered}"' expected start of object ('{') or assignment ('=')

使用Terraform(0.9.3)是否可以做到这一点?

如果不是,使用Terraform执行此操作的最佳方式是什么?

推荐答案

您是否尝试过template_cloudinit_config

添加以下代码。

data "template_cloudinit_config" "master" {
  gzip          = true
  base64_encode = true

  # get common user_data
  part {
    filename     = "common.cfg"
    content_type = "text/part-handler"
    content      = "${data.template_file.userdata_common.rendered}"
  }

  # get master user_data
  part {
    filename     = "master.cfg"
    content_type = "text/part-handler"
    content      = "${data.template_file.userdata_master.rendered}"
  }

}

# sample code to use it.
resource "aws_instance" "web" {
  ami           = "ami-d05e75b8"
  instance_type = "t2.micro"
  user_data     = "${data.template_cloudinit_config.master.rendered}"
}

如果有效,请通知我。

这篇关于在Terraform中使用多个USER_DATA文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆