【发布时间】:2019-07-22 00:05:06
【问题描述】:
我在运行 terraform plan
时收到如下错误消息Error: Error in function call
on instance.tf line 3, in resource "aws_key_pair" "mykey":
3: public_key = "${file("${var.PATH_TO_PUBLIC_KEY}")}"
|----------------
| var.PATH_TO_PUBLIC_KEY is "mykey.pub"
Call to function "file" failed: no file exists at mykey.pub.
在文件系统上,我有以下两个文件
/home/ec2-user/ravi-tf-work-3/Ravi-TF-Work.pem
/home/ec2-user/ravi-tf-work-3/Ravi-TF-Work.pub
我的 terraform 代码如下 main.tf
resource "aws_key_pair" "mykey" {
key_name = "mykey"
public_key = "${file("${var.PATH_TO_PUBLIC_KEY}")}"
}
resource "aws_instance" "example" {
ami = "${lookup(var.AMIS, var.AWS_REGION)}"
instance_type = "t2.micro"
key_name = "${aws_key_pair.mykey.key_name}"
provisioner "file" {
source = "script.sh"
destination = "/tmp/script.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/script.sh",
"sudo /tmp/script.sh"
]
}
connection {
host = "${self.public_ip}"
user = "${var.INSTANCE_USERNAME}"
private_key = "${file("${var.PATH_TO_PRIVATE_KEY}")}"
}
}
vars.tf
variable "AWS_ACCESS_KEY" {}
variable "AWS_SECRET_KEY" {}
variable "AWS_REGION" {
default = "ap-southeast-2"
}
variable "AMIS" {
type = "map"
default = {
ap-southeast-2 = "ami-039bb4c3a7946ce19"
ap-southeast-2 = "ami-039bb4c3a7946ce19"
ap-southeast-1 = "ami-05c6d22d98f97471c"
}
}
/*
variable "PATH_TO_PRIVATE_KEY" {
default = "/home/ec2-user/ravi-tf-work-3/Ravi-TF-Work.pem"
}
variable "PATH_TO_PUBLIC_KEY" {
default = "/home/ec2-user/ravi-tf-work-3/Ravi-TF-Work.pub"
}
*/
variable "PATH_TO_PRIVATE_KEY" {
default = "mykey"
}
variable "PATH_TO_PUBLIC_KEY" {
default = "mykey.pub"
}
variable "INSTANCE_USERNAME" {
default = "ubuntu"
}
在我的 AWS 账户中,我有私钥,并且我下载了名称为 Ravi-TF-Work.pem 的公共密钥 我通过以下命令将 *.pem 转换为 *.pub:
ssh-keygen -y -f private_key1.pem > public_something_else.pub
Terraform 版本如下
Terraform v0.12.5
+ provider.aws v2.20.0
在这个阶段,我对我的 AWS 账户中的私钥和我下载的公钥(pem 文件,转换为 pub 文件)以及如何使其工作感到困惑。
任何线索将不胜感激。
【问题讨论】:
标签: terraform terraform-provider-aws