使用 terraform 中的数据源为 aws 实例添加用户数据

Add userdata for aws instance using data-source in terraform

我需要使用 Terraform 创建一个包含用户数据的 AWS 实例。我正在使用 terraform 0.10.0

ec2.tf

data "template_file" "user_data" {
  template = "userdata.tpl"
}

resource "aws_instance" "fluentd-web" {
  ami           = "${lookup(var.amis, var.aws_region)}"
  instance_type = "t2.micro"
  subnet_id = "${var.subnet_id}"
  user_data = "${data.template_file.user_data.rendered}"
  security_groups =[ "${aws_security_group.ec2_sg.id}" ]
  connection {
     ***
  }
}

userdata.tpl

#! /bin/bash

apt install <**>

在应用terraform 时,没有显示错误。但是文件的内容没有作为用户数据填充。它只是将文件名显示为用户数据。

如何获取文件内容作为用户数据?

设置模板如下:

template = "${file("${path.module}/userdata.tpl")}"

这里我们使用${path.module}获取模块相对路径。

参考:https://www.terraform.io/docs/modules/create.html

您的 template 值必须按照以下方式获取用户数据文件:

 template = "${file("userdata.tpl")}"