2017-09-01 43 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 - 這沒有這樣的屬性錯誤)。不幸的是,我找不到任何人通過谷歌類似的問題。從我所讀到的,我應該能夠以這種方式提供現場實例。

感謝您提供的任何幫助。

回答