如何使用 terraform 模板文件为 ec2 user_data 设置环境变量
How to set environment variable for ec2 user_data with terraform templatefile
我想 运行 myscript.sh
使用 terraform 模板文件。我在 EC2 中将变量 password
设置为环境变量。但是,脚本在我启动实例时运行不佳。
这是我写的文件。在 user_data 下传递环境变量的正确方法是什么?
myscript.sh
#! /bin/bash
echo $password
# Continue to some procedures
- 我的 Terraform 模板
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 = "********"
}))
}
我想 运行 myscript.sh
使用 terraform 模板文件。我在 EC2 中将变量 password
设置为环境变量。但是,脚本在我启动实例时运行不佳。
这是我写的文件。在 user_data 下传递环境变量的正确方法是什么?
myscript.sh
#! /bin/bash
echo $password
# Continue to some procedures
- 我的 Terraform 模板
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 = "********"
}))
}