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

咨询:销毁VM时能否通过API按主机名删除Tailscale设备?

可用的Tailscale设备删除API方案

当然有对应的API可以实现销毁VM时同步删除Tailscale设备,无需手动操作控制台,具体步骤如下:

1. 准备API密钥

先在Tailscale管理控制台的「Settings > Personal settings > API keys」页面创建一个具备devices:write权限的API密钥,这个密钥将用于后续API请求的身份验证。

2. 通过主机名获取设备ID

Tailscale的删除API需要使用设备ID而非主机名,所以第一步要先通过主机名查询对应设备的ID:

  • 发送GET请求到端点:https://api.tailscale.com/api/v2/device
  • 添加查询参数:name=<你的VPS主机名>
  • 请求头携带身份验证:Authorization: Bearer <你的API密钥>

示例curl命令:

curl -H "Authorization: Bearer YOUR_API_KEY" "https://api.tailscale.com/api/v2/device?name=your-vps-hostname"

返回结果中会包含该设备的id字段,记录这个值用于下一步删除操作。

3. 通过设备ID删除设备

拿到设备ID后,发送DELETE请求完成删除:

  • 请求端点:https://api.tailscale.com/api/v2/device/<设备ID>
  • 同样携带Authorization: Bearer <你的API密钥>请求头

示例curl命令:

curl -X DELETE -H "Authorization: Bearer YOUR_API_KEY" "https://api.tailscale.com/api/v2/device/DEVICE_ID"

Terraform集成建议

在你的Terraform脚本中,可以通过local-exec provisioner在VM销毁阶段自动执行上述API请求,比如:

resource "null_resource" "tailscale_cleanup" {
  depends_on = [your_vps_resource]

  provisioner "local-exec" {
    when        = destroy
    command     = <<EOT
      DEVICE_ID=$(curl -s -H "Authorization: Bearer ${var.tailscale_api_key}" "https://api.tailscale.com/api/v2/device?name=${var.vps_hostname}" | jq -r '.devices[0].id')
      curl -X DELETE -H "Authorization: Bearer ${var.tailscale_api_key}" "https://api.tailscale.com/api/v2/device/$DEVICE_ID"
    EOT
    interpreter = ["bash", "-c"]
  }
}

注意需要确保执行环境安装了jq用于解析JSON返回结果,或者用其他方式提取设备ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:07:46