问题描述
得到错误“导入KeyPair:MissingParameter:当我运行“ terrain apply”时,请求必须包含参数PublicKeyMaterial。这个错误是什么意思。
resource "aws_instance" "ec2_test_instance" {
ami = var.instance_test_ami
instance_type = var.instance_type
subnet_id = var.aws_subnet_id
key_name = aws_key_pair.deployer.key_name
tags = {
Name = var.environment_tag
}
provisioner "local-exec" {
command = "echo ${self.public_ip} > public-ip.txt"
}
provisioner "remote-exec" {
connection {
type = "ssh"
host = self.public_ip
user = "centos"
private_key = file("${path.module}/my-key")
}
inline = [
"sudo yum -y install wget,unzip","sudo yum -y install java-1.8.0-openjdk"
]
}
}
解决方法
假设其他所有内容均正确,则connection
块应位于provisioner内,而不应位于其外:
resource "aws_instance" "ec2_test_instance" {
ami = var.instance_test_ami
instance_type = var.instance_type
subnet_id = var.aws_subnet_id
key_name = aws_key_pair.deployer.key_name
provisioner "remote-exec" {
connection {
type = "ssh"
host = self.public_ip
user = "centos"
private_key = file("${path.module}/my-key")
}
inline = [
"sudo yum -y install wget,unzip","sudo yum -y install java-1.8.0-openjdk",]
}
}