我在EC2实例上实现了自动化——用凭据和密钥加载不同的应用程序。我不想硬编码的钥匙-需要一种方法运行自动化与地形。到目前为止我想做的事情:
1( 在本地创建bash脚本,并使用provisioner在terrafom中上传该脚本;文件";
provisioner "file" {
source = "keys.sh"
destination = "keys.sh"
**bash脚本包含导出到环境变量**
#!/bin/bash
#PLEASE ADD GOT .GITIGNORE
export REPO_SECRET=SoMeRepOSceRt
cat << EOF > /home/ubuntu/.ssh/privatekey
----KEY-RSA---STARS--HERE
AjsdhKKKSSL
--END--Key
EOF
问题是我无法使用";远程exec内联源/文件"-找不到获取错误源。
provisioner "remote-exec" {
inline = [
"chmod +x /home/ubuntu/keys.sh",
"source /home/ubuntu/keys.sh",
]
使用(点(/脚本也不起作用。
aws_instance.TestBashEnv (remote-exec): /tmp/terraform_1852118673.sh: 1: source: not found
因此,当创建EC2实例时,我需要一种自动获取文件源的方法,以便应用bash脚本中的env变量。
**第页。S-如果有一个检查bash文件keys.sh是否在地形应用程序设置期间上传的feture(文件存在吗?(,那就太好了
下面是我如何处理这个问题。
provisioner "file" {
source = "keys.sh"
destination = "/home/ubuntu/keys.sh"
}
然后是:
provisioner "remote-exec" {
inline = [
"chmod +x /home/ubuntu/keys.sh",
"/home/ubuntu/keys.sh",
]
}
这在remote-exec
的Terraform文档中有更详细的解释。
我尝试的方法不起作用。每个想要使用密钥的bash脚本都需要在文件的开头获取keys.sh
。