如何使用 terraform 模板文件为 ec2 user_data 设置环境变量

How to set environment variable for ec2 user_data with terraform templatefile

我想 运行 myscript.sh 使用 terraform 模板文件。我在 EC2 中将变量 password 设置为环境变量。但是,脚本在我启动实例时运行不佳。

这是我写的文件。在 user_data 下传递环境变量的正确方法是什么?

#! /bin/bash
echo $password
# Continue to some procedures
resource "aws_instance" "web" {
  ami           = data.aws_ssm_parameter.amzn2_ami.value
  instance_type = "t2.micro"
  key_name      = aws_key_pair.key_pair.key_name
  user_data     = templatefile("./scripts/myscript.sh", {
    password = "********"
  })
}

您的 myscript.sh 缺失 #!/bin/bash,要引用传递的变量,您应该使用 ${password}。所以应该是:

#!/bin/bash
echo ${password} > /tmp/test.txt

另外,最好将 echo 保存到 /tmp/test.txt 中进行测试。否则你想看到任何输出。但是使用 /tmp/test.txt 您可以登录实例并检查 /tmp/test.txt 是否存在。

另外脚本没有设置任何环境变量。

尝试

  resource "aws_instance" "web" {
      ami           = data.aws_ssm_parameter.amzn2_ami.value
      instance_type = "t2.micro"
      key_name      = aws_key_pair.key_pair.key_name
      user_data_base64     = base64encode(templatefile("./scripts/myscript.sh", {
        password = "********"
      }))
    }