2016-12-03 18 views
1

連接廚師供應者我不能讓terraform的SSH通過私人AWS密鑰對的廚師供應連接 - 錯誤看起來只是一個超時:Terraform不能使用ssh

aws_instance.app (chef): Connecting to remote host via SSH... 
aws_instance.app (chef): Host: 96.175.120.236:32: 
aws_instance.app (chef): User: ubuntu 
aws_instance.app (chef): Password: false 
aws_instance.app (chef): Private key: true 
aws_instance.app (chef): SSH Agent: true 
aws_instance.app: Still creating... (5m30s elapsed) 
Error applying plan: 

1 error(s) occurred: 

* dial tcp 96.175.120.236:32: i/o timeout 

Terraform does not automatically rollback in the face of errors. 
Instead, your Terraform state file has been partially updated with 
any resources that successfully completed. Please address the error 
above and apply again to incrementally change your infrastructure. 

這裏是我的terraform計劃 - 注意SSH設置..在KEY_NAME設置爲我的AWS密鑰對名稱和ssh_for_chef.pem是私鑰

variable "AWS_ACCESS_KEY" {} 
variable "AWS_SECRET_KEY" {} 

provider "aws" { 
    region = "us-east-1" 
    access_key = "${var.AWS_ACCESS_KEY}" 
    secret_key = "${var.AWS_SECRET_KEY}" 
} 

resource "aws_instance" "app" { 
    ami = "ami-88aa1ce0" 
    count = "1" 
    instance_type = "t1.micro" 
    key_name = "ssh_for_chef" 
    security_groups = ["sg-c43490e1"] 
    subnet_id = "subnet-75dd96e2" 
    associate_public_ip_address = true 


    provisioner "chef" { 
    server_url = "https://api.chef.io/organizations/xxxxxxx" 
    validation_client_name = "xxxxxxx-validator" 
    validation_key = "/home/user01/Documents/Devel/chef-repo/.chef/xxxxxxxx-validator.pem" 
    node_name = "dubba_u_7" 
    run_list = [ "motd_rhel" ] 
    user_name = "user01" 
    user_key = "/home/user01/Documents/Devel/chef-repo/.chef/user01.pem" 
    ssl_verify_mode = "false" 
    } 
    connection { 
     type = "ssh" 
     user = "ubuntu" 
     private_key = "${file("/home/user01/Documents/Devel/ssh_for_chef.pem")}" 
    } 
} 

任何想法?

+0

您的安全組允許進入的端口22訪問? – StephenKing

+0

是允許端口22進/出。所有AWS值都在測試廚房中工作,所以我必須在我的缺失計劃中遇到問題。 – TyMac

+0

看起來像我需要弄清楚如何分配一個彈性ip – TyMac

回答

1

我不確定我們是否有同樣的問題,因爲您沒有指定是否能夠ssh到實例。
就我而言,我從VPC內運行terraform,並且允許連接一個安全組,但不能與公共IP一起使用。
解決方案很簡單(但你將不得不使用terraform v.0.8.0的新的條件插值) -

這個變量 - variable use_public_ip { default = true }

然後,廚師供應方的連接部分內,添加以下行 -
host = "${var.use_public_ip ? aws_instance.instance.public_ip : aws_instance.instance.private_ip}"

如果您希望使用公共IP,請將變量設置爲true,否則將其設置爲false。

我用這個AWS - connection { user = "ubuntu" host = "${var.use_public_ip ? aws_instance.instance.public_ip : aws_instance.instance.private_ip}"," }

+0

不是同樣的問題,但您的情況可能會在未來派上用場!感謝您分享此信息 :) – TyMac