使用Terraform设置Digitalocean实例

时间:2019-08-28 00:02:29

标签: terraform

我正在尝试使用Terraform配置数字海洋飞沫。我似乎在连接块中缺少主机参数,但是不确定我对digitalocean需要什么值。

这是我的配置文件:

resource "digitalocean_droplet" "test" {                                                                                                                                 
   image = "ubuntu-18-04-x64"                                                                                                                                           
   name = "test"                                                                                                                                                        
   region = "nyc1"                                                                                                                                                      
   size = "512mb"                                                                                                                                                       
   private_networking = true                                                                                                                                            
   ssh_keys = [                                                                                                                                                         
   "${var.ssh_fingerprint}"                                                                                                                                             
  ]                                                                                                                                                                      

  connection {                                                                                                                                                           
    user = "root"                                                                                                                                                      
    type = "ssh"                                                                                                                                                       
    private_key = "${file("~/.ssh/id_rsa")}"                                                                                                                           
    timeout = "2m"                                                                                                                                                     
  }                                                                                                                                                                      

  provisioner "remote-exec" {                                                                                                                                            
    inline = [                                                                                                                                                         
      "export PATH=$PATH:/usr/bin",                                                                                                                                    
      # install nginx                                                                                                                                                  
      "sudo apt-get update",                                                                                                                                           
      "sudo apt-get -y install nginx"                                                                                                                                  
    ]                                                                                                                                                                  
  }                                                                                                                                                                      

}        

“ terraform validate”给我错误:

  

错误:缺少必需的参数

     

在frontend.tf第11行的资源“ digitalocean_droplet”“测试”中:     11:连接{

     

参数“ host”是必需的,但未找到定义。

3 个答案:

答案 0 :(得分:1)

我在弄弄这个,找到了答案。

在连接块中,我们应将主机设置为:

connection {
     user = "root"
     type = "ssh"
     host = "${self.ipv4_address}"
     private_key = "${file(var.pvt_key)}"
     timeout = "2m"
}

答案 1 :(得分:0)

您可以显式引用导出的var:

connection {
  user     = "root"
  host     = "${digitalocean_droplet.test.ipv4_address}"
  type     = "ssh"
  password = "${file(var.pvt_key)}"
}

答案 2 :(得分:0)

我认为您的语法有问题。

尝试如下使用:

private_key = file("/home/user/.ssh/id_rsa")

我正在使用terraform版本0.12.25

祝你好运。