使用地形自动化向EC2实例添加密钥



我在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

最新更新