azure-ddns-docker
Docker image to update Azure DNS records to mimic Dynamic DNS service.
Usage
Service Principal
If you don't have a service principal yet, you may create a new one as we will use it to query and update Azure DNS records.
az ad sp create-for-rbac --name "<APP_ID_URI>" --role "Contributor" --scope "<RESOURCE_ID>"
Parameter | Description |
---|---|
APP_ID_URI | Service principal's application ID URI Example: sp://ddns-updater |
RESOURCE_ID | DNS Zone Resource ID Example: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-mygroup/providers/Microsoft.Network/dnszones/mydomain.com |
In case you already have one, you may want to add role assignment so it can query and update Azure DNS records.
az role assignment create --assignee "<APP_ID>" --role "Contributor" --scope "<RESOURCE_ID>"
Parameter | Description |
---|---|
APP_ID | Service principal's application ID URI or ID URI |
RESOURCE_ID | DNS Zone Resource ID Example: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-mygroup/providers/Microsoft.Network/dnszones/mydomain.com |
Get Image
Pull Image
docker pull ghcr.io/pacroy/azure-ddns
docker tag ghcr.io/pacroy/azure-ddns azure-ddns
Build Locally
docker build --no-cache -t azure-ddns .
Execute
docker run --interactive --rm \
-e CLIENT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-e CLIENT_SECRET="your-client-secret" \
-e TENANT_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-e RESOURCE_GROUP="rg-mygroup" \
-e DNSZONE="mydomain.com" \
-e RECORD_NAMES="record1 record2" \
-e UPDATE_IP_CMD="dig +short myotherdomain.com" \
azure-ddns
Parameter | Description |
---|---|
CLIENT_ID | AzureAD application ID or ID URI of the service principal |
CLIENT_SECRET | Secret of service principal |
TENANT_ID | AzureAD tenant ID |
RESOURCE_GROUP | Resource group of the DNS zone |
DNSZONE | DNS zone name |
RECORD_NAMES | DNS record names, separated by space |
UPDATE_IP_CMD | Command to get the up-to-date IP Leave blank use default curl -fsSL ipv4.icanhazip.com to use the external IP of the hostOr set dig +short myotherdomain.com to clone IP from the other domain. |