【发布时间】:2020-07-15 10:43:38
【问题描述】:
我在 EC2 实例上实现了自动化 - 使用凭据和密钥加载不同的应用程序。 我不想对密钥进行硬编码 - 需要一种使用 terraform 运行自动化的方法。 到目前为止我的想法:
1) 在本地创建 bash 脚本并使用配置器“file”将脚本上传到 terrafom 中
provisioner "file" {
source = "keys.sh"
destination = "keys.sh"
** bash 脚本包含 EXPORT 到环境变量**
#!/bin/bash
#PLEASE ADD GOT .GITIGNORE
export REPO_SECRET=SoMeRepOSceRt
cat << EOF > /home/ubuntu/.ssh/privatekey
----KEY-RSA---STARS--HERE
AjsdhKKKSSL
--END--Key
EOF
问题是我无法使用“remote-exec inline source ./file”获取文件 - 找不到错误源。
provisioner "remote-exec" {
inline = [
"chmod +x /home/ubuntu/keys.sh",
"source /home/ubuntu/keys.sh",
]
使用(点)。 ./script 也不起作用。
aws_instance.TestBashEnv (remote-exec): /tmp/terraform_1852118673.sh: 1: source: not found
所以我需要一种在创建 EC2 实例时自动获取文件的方法,以便应用 bash 脚本中的 env 变量。
**P.S - 如果有一个功能可以检查 bash 文件 keys.sh 在 terraform 应用设置期间是否上传(文件是否存在?)
【问题讨论】:
-
不应该用
remote-exec运行脚本满足您的需要吗?它应该运行脚本中的命令并使环境变量和私钥可用,因此在这种情况下您不需要使用source。
标签: bash terraform hashicorp-otto