You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform多Droplet输出中同时返回公网IP和生成的随机密码

Terraform 输出 DigitalOcean Droplet 实例名、公网IP、密码的修改方案

你只需要在output中将每个Droplet实例和对应的random_string密码资源做映射,把三类信息打包为结构化对象输出即可,以下是具体配置示例:


参考资源定义(如果你的资源命名和示例不一致,对应替换即可)

# 示例:待创建的Droplet列表变量
variable "droplet_names" {
  type    = list(string)
  default = ["web-01", "web-02", "db-01"]
}

# 为每台VM生成独立随机密码
resource "random_string" "vm_login_pwd" {
  for_each = toset(var.droplet_names)
  length   = 16
  special  = true
}

# 创建Droplet资源
resource "digitalocean_droplet" "instance" {
  for_each = toset(var.droplet_names)
  name     = each.value
  image    = "ubuntu-22-04-x64"
  size     = "s-1vcpu-1gb"
  region   = "sgp1"

  # 你已有的remote-exec配置省略,其中使用random_string.vm_login_pwd[each.key].result设置密码
}

修改Output配置

适配for_each批量创建的场景

output "droplet_full_info" {
  description = "Droplet完整信息:实例名、公网IP、登录密码"
  type = list(object({
    name      = string
    public_ip = string
    password  = string
  }))
  value = [
    for name in var.droplet_names : {
      name      = digitalocean_droplet.instance[name].name
      public_ip = digitalocean_droplet.instance[name].ipv4_address
      password  = random_string.vm_login_pwd[name].result
    }
  ]
  # 密码属于敏感信息,必须加此参数,否则Terraform会校验报错
  sensitive = true
}

适配count批量创建的场景

output "droplet_full_info" {
  description = "Droplet完整信息:实例名、公网IP、登录密码"
  type = list(object({
    name      = string
    public_ip = string
    password  = string
  }))
  value = [
    for i in range(length(digitalocean_droplet.instance)) : {
      name      = digitalocean_droplet.instance[i].name
      public_ip = digitalocean_droplet.instance[i].ipv4_address
      password  = random_string.vm_login_pwd[i].result
    }
  ]
  sensitive = true
}

查看明文输出

因为output标记了敏感属性,默认执行terraform apply不会直接展示密码,执行以下命令即可查看完整的明文信息:
terraform output -raw droplet_full_info


注意事项

  • 密码会明文存储在Terraform state文件中,请务必做好state文件的加密和权限管控
  • 不需要使用密码输出时,建议及时删除该output配置,降低泄露风险

内容的提问来源于stack exchange,提问作者mocart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:24:03