【发布时间】:2021-10-31 18:10:47
【问题描述】:
我在 windows-10 上使用以下 terraform 配置 Terraform v1.0.4 在 windows_amd64 上
- 提供者 registry.terraform.io/hashicorp/aws v3.55.0
我正在尝试使用配置程序“remote-exec”在 ec2 实例上安装一些软件包。在此,当我在连接块中提供 private_key 时,我收到以下错误消息
Failed to read ssh private key: no key found
这就是我的远程执行和连接块的样子
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 3.0"
}
}
}
resource "aws_instance" sandbox {
ami = "ami-0ff338189efb7ed37"
instance_type = "t3.micro"
tags = {
Name = "sandbox"
Description = "sandbox server"
}
provisioner "remote-exec" {
inline = [ "sudo apt update",
"sudo apt install ansible -y"
]
}
connection {
type = "ssh"
host = self.public_ip
user = "ubuntu"
private_key = file("C:\\Users\\asdfsd\\Downloads\\asdfsd-ubuntu.pem")
}
key_name = aws_key_pair.sandbox_key.id
vpc_security_group_ids = [aws_security_group.ssh_access.id]
}
resource "aws_key_pair" "sandbox_key" {
public_key = file("C:\\Users\\asdfsd\\Downloads\\asdfsd-ubuntu-public.pem")
}
我尝试在 stackoverflow 上引用其他类似的线程,但他们谈论的是一些 ${module.path}。我不确定这条路径指的是什么。因此,该解决方案对我不起作用。
有没有人遇到过类似的问题?非常感谢任何帮助。
此外,我尝试读取私钥的内容并将其作为文本传递给连接块,但它也不起作用。
locals {
key_data = file("C:\\Users\\asdfasdf\\Downloads\\asdffa-ubuntu.pem")
}
.
.
.
private_key = local.key_data
.
.
Best regards,
Amit Joshi.
【问题讨论】:
-
你可以试试:
/c/Users/asdfasdf/Downloads/asdfasdf-ubuntu.pem? -
第二种方法是否会出现同样的错误?您能否扩展该错误消息的上下文,以便它包含引发错误的资源?理想情况下,您的 Terraform 代码也应该更完整,如 minimal reproducible example 所述。最后,您确定密钥文件存在于该路径中,并且您运行 Terraform 的用户对该文件具有读取权限吗?
-
/c/Users/asdfasdf/Downloads/asdfasdf-ubuntu.pem - 这不起作用。
-
@ydaetskcoR 我已经用实际代码更新了问题描述。此外,用户可以访问这些文件,并且与运行 terraform 的用户相同。
-
您尚未扩展错误消息以显示错误的完整上下文,因此不清楚哪个资源引发了该错误。您能否展开它以显示完整的错误输出?
标签: terraform