#dns-records #azure #dns #cli #azure-dns

app home-dns-refresh

查找当前的外部 IP,并将 Azure 区域 A 记录更新为该 IP

3 个版本

0.1.8 2023 年 8 月 29 日
0.1.6 2023 年 8 月 29 日
0.1.2 2023 年 8 月 29 日

#1889 in 命令行工具

MIT 许可证

12KB
168

主页 DNS 刷新

Crate Validate Release

home-dns-refresh 是一个 CLI 任务,用于查找当前的外部 IP,并在 IP 不同时更新 Azure 区域 A 记录。

A 记录必须是可解析的,这样它才能检查它是否相同或不同。

本地安装

cargo install home-dns-refresh

如何运行命令

运行命令以显示用法

home-dns-refresh --help

这将显示运行时的选项

home-dns-refresh
Updates an Azure DNS zone A record to the currently external IP address

USAGE:
    home-dns-refresh [OPTIONS] --client-id <client-id> --client-secret <client-secret> --resource-group <resource-group-name> --sub-domain <sub-domain> --subscription-id <subscription-id> --tenant-id <tenant-id> --zone-name <zone-name>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --client-id <client-id>                   
    -p, --client-secret <client-secret>           
    -r, --resource-group <resource-group-name>    
    -d, --sub-domain <sub-domain>                 
    -s, --subscription-id <subscription-id>       
    -t, --tenant-id <tenant-id>                   
        --ttl <ttl>                               
    -z, --zone-name <zone-name>   

在 Nomad 上设置周期性作业

job "home_dns_refresh" {
  datacenters = ["dc1"]
  type = "batch"

  periodic {
    cron                = "*/5 * * * * *"
    prohibit_overlap    = false
  }

  group "home_dns_refresh" {
    count = 1
    task "home_dns_refresh" {
      driver = "docker"

      config {
        image = "ghcr.io/haribo256/haribo256/home-dns-refresh:<version>"

        args = [
          "--tenant-id", "<tenant-id>",
          "--subscription-id", "<subscription-id>",
          "--resource-group", "<resouce-group>",
          "--zone-name", "<azure-zone>",
          "--sub-domain", "<subdomain-on-azure-zone-to-update>",
          "--client-id", "<azure-client-id>",
          "--client-secret", "<azure-client-secret>"
        ]
      }

      restart {
        attempts = 0
        mode = fail
      }

      resources {
        cpu    = 100
        memory = 20
      }
    }
  }
}

依赖关系

~7–22MB
~289K SLoC