1
resource "digitalocean_droplet" "web-server" {
    image = "ubuntu-18-04-x64"
    name = "web-server"
    region = "nyc2"
    size = "s-1vcpu-1gb"
    ssh_keys = [
        var.ssh_fingerprint
    ]
    connection {
        host = digitalocean_droplet.web-server.ipv4_address
        user = "root"
        type = "ssh"
        private_key = file(var.pvt_key)
        timeout = "2m"
    }
    provisioner "remote-exec" {
        inline = [
            "export PATH=$PATH:/usr/bin",
            "sudo apt-get update",
            "sudo apt-get -y install nginx"
        ]
    }
}

目前,我正在使用上述方法通过Terraform在 Digital Ocean 液滴上安装 NGINX ,但是还有另一种方法可以让 Terraform 管理这个状态吗?我希望能够管理升级、负载平衡等事情,这似乎是一种反模式?

4

1 回答 1

1

您可以使用https://www.terraform.io/docs/providers/do/r/droplet.html中所述的液滴 user_data 。

创建一个模板,然后使用呈现为您的用户数据值的模板

#!/usr/bin/env bash
set -x
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
export PATH="$PATH:/usr/bin"
sudo apt-get update
sudo apt-get -y install nginx

您的资源现在将如下所示:

data "template_file" "userdata" {
  template = "${file("${path.module}/userdata.sh")}"
}


 resource "digitalocean_droplet" "web-server" {
        image = "ubuntu-18-04-x64"
        name = "web-server"
        region = "nyc2"
        size = "s-1vcpu-1gb"
        user_data   "${data.template_file.userdata.rendered}"
        ssh_keys = [
            var.ssh_fingerprint
        ]
    }
于 2019-12-26T22:14:00.000 回答