【问题标题】:terraform V12: Error import KeyPair: MissingParameter: The request must contain the parameter PublicKeyMaterialterraform V12:错误导入KeyPair:MissingParameter:请求必须包含参数PublicKeyMaterial
【发布时间】:2020-12-27 07:50:44
【问题描述】:

运行“terraform apply”时出现错误“import KeyPair: MissingParameter: The request must contain the parameter 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"
    ]
   }
}

【问题讨论】:

  • 使用 terraform v12 版本
  • connection 在哪里使用?你能提供完整的例子吗?
  • 您可以编辑问题并提供示例吗?
  • @Marcin 我用示例编辑了我的问题。感谢您查看它

标签: amazon-web-services import terraform public-key key-pair


【解决方案1】:

假设其他一切都正确,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",
     ]
   }
}

【讨论】:

  • 根据您的建议,我将连接移到了配置器中。我发现还有另一个“tf 脚本”也在导入“密钥”。这是用户错误。按预期工作。谢谢
  • @Anu 没问题。很高兴它成功了。如果我的回答有帮助,我们将不胜感激。
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
相关资源
最近更新 更多