Search code examples
terraformuser-datacloud-init

Terraform: User Data not rendered


Using terraform to run some user data upon instance creation:

  user_data = "${template_file.user_data.rendered}"

Here is the definition:

resource "template_file" "user_data" {
  template = "files/user_data.tpl"
  vars {
    docker_version = "17.12.1~ce-0~ubuntu"
  }
}

However, in the created instance, the user data just includes the above line:

sudo cat /var/lib/cloud/instances/i-05e8a76335472f27c/user-data.txt
files/user_data.tpl

Any suggestions?


Solution

  • According to template provider doc, the syntax should be:

    data "template_file" "user_data" {
      template = "${file(files/user_data.tpl)}"
      vars {
        docker_version = "17.12.1~ce-0~ubuntu"
      }
    }
    
    ...
    resource "aws_instance" "instance" {
      user_data = "${data.template_file.user_data.rendered}"
      ...
    }