2017-09-01 65 views
3

我正在尝试通过terraform旋转现场实例。当我尝试使用预配置块(“remote-exec”或“file”)时,它会失败,并在DEBUG级别输出中看到SSH错误。当我从现场实例请求切换到标准aws实例资源声明时,配置工作正常。无法通过terraform提供aws_spot_instance

代码不工作:

resource "aws_spot_instance_request" "worker01" { 
     ami   = "ami-0cb95574" 
     spot_price = "0.02" 
     instance_type = "m3.medium" 
     vpc_security_group_ids = [ "${aws_security_group.ssh_access.id}", "${aws_security_group.tcp_internal_access.id}","${aws_security_group.splunk_access.id}","${aws_security_group.internet_access.id}" ] 
     subnet_id  = "..." 
     associate_public_ip_address = true 

     connection { 
     type = "ssh" 
     user = "ec2-user" 
     private_key = "${file("${var.private_key_path}")}" 
     } 

     provisioner "remote-exec" { 
     inline = [ 
      "touch foo", 
     ] 
     } 
    } 

错误:

aws_spot_instance_request.worker01 (remote-exec): Connecting to remote host via SSH... 
    aws_spot_instance_request.worker01 (remote-exec): Host: 
    aws_spot_instance_request.worker01 (remote-exec): User: ec2-user 
    2017/09/01 16:17:52 [DEBUG] plugin: terraform: remote-exec-provisioner (internal) 2017/09/01 16:17:52 handshaking with SSH 
    aws_spot_instance_request.worker01 (remote-exec): Password: false 
    aws_spot_instance_request.worker01 (remote-exec): Private key: true 
    aws_spot_instance_request.worker01 (remote-exec): SSH Agent: true 
    2017/09/01 16:17:52 [DEBUG] plugin: terraform: remote-exec-provisioner (internal) 2017/09/01 16:17:52 handshake error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain 
    2017/09/01 16:17:52 [DEBUG] plugin: terraform: remote-exec-provisioner (internal) 2017/09/01 16:17:52 Retryable error: ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain 

工作代码:

resource "aws_instance" "worker01" { 
     ami   = "ami-0cb95574" 
     instance_type = "m3.medium" 
     vpc_security_group_ids = [ "${aws_security_group.ssh_access.id}", "${aws_security_group.tcp_internal_access.id}","${aws_security_group.splunk_access.id}","${aws_security_group.internet_access.id}" ] 
     subnet_id  = "..." 
     associate_public_ip_address = true 

     connection { 
     type = "ssh" 
     user = "ec2-user" 
     private_key = "${file("${var.private_key_path}")}" 
     } 

     provisioner "remote-exec" { 
     inline = [ 
      "touch foo", 
     ] 
     } 
    } 

我已经尝试了非工作代码的几个不同的迭代(包括愚蠢的尝试硬编码一个现场实例的公共IP和尝试自动引用现场实例公共IP - 这没有这样的属性错误)。不幸的是,我找不到任何人通过谷歌类似的问题。从我所读到的,我应该能够以这种方式提供现场实例。

感谢您提供的任何帮助。

回答