octodns-azure


Nameoctodns-azure JSON
Version 0.0.9 PyPI version JSON
download
home_pagehttps://github.com/octodns/octodns-azure
SummaryAzure DNS & TrafficManager provider for octoDNS
upload_time2024-08-22 15:49:39
maintainerNone
docs_urlNone
authorRoss McFarland
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## Azure DNS & TrafficManager provider for octoDNS

An [octoDNS](https://github.com/octodns/octodns/) provider that targets [Azure](https://azure.microsoft.com/en-us/services/dns/#overview).

### Installation

#### Command line

```
pip install octodns-azure
```

#### requirements.txt/setup.py

Pinning specific versions or SHAs is recommended to avoid unplanned upgrades.

##### Versions

```
# Start with the latest versions and don't just copy what's here
octodns==0.9.14
octodns-azure==0.0.1
```

##### SHAs

```
# Start with the latest/specific versions and don't just copy what's here
-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns
-e git+https://git@github.com/octodns/octodns-azure.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_azure
```

### Configuration

```yaml
providers:
  azure:
    class: octodns_azure.AzureProvider
    # Current support of authentication of access to Azure services is
    # either using a Service Principal or deferring to an already authenticated
    # `az` CLI instance.
    # https://docs.microsoft.com/en-us/azure/azure-resource-manager/
    #                        resource-group-create-service-principal-portal
    # https://learn.microsoft.com/en-us/cli/azure/
    #
    # The authentication method, either 'client_secret' or 'cli'. This is
    # 'client_secret' by default
    client_credential_method: 'client_secret'
    # The Azure Active Directory Application ID (aka client ID). Required for
    # the 'client_secret' credential method.
    client_id: env/AZURE_APPLICATION_ID
    # Authentication Key Value: (note this should be secret). Required for the
    # 'client_secret' credential method
    key: env/AZURE_AUTHENTICATION_KEY
    # Directory ID (aka tenant ID):
    directory_id: env/AZURE_DIRECTORY_ID
    # Subscription ID:
    sub_id: env/AZURE_SUBSCRIPTION_ID
    # Resource Group name:
    resource_group: 'TestResource1'
    # All are required to authenticate.
    # Azure RetryPolicy Settings all of them are optional.
    # https://azuresdkdocs.blob.core.windows.net/$web/python/azure-core/1.9.0/azure.core.pipeline.policies.html?highlight=retrypolicy#azure.core.pipeline.policies.RetryPolicy
    # Total_retries default 10
    #client_total_retries: 10
    # status_retries default 3
    #client_status_retries: 3
    # The maximum number of record sets to return per page.
    # https://learn.microsoft.com/en-us/rest/api/dns/record-sets/list-by-dns-zone
    # Top default 100
    #top: 100
    # Azure AD authentication URL
    # defaults to: https://login.microsoftonline.com
    # docs: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.clientsecretcredential?view=azure-python#parameters
    #authority: https://management.azure.com
    # ARM Management URL
    # defaults to: https://management.azure.com
    # docs: https://docs.microsoft.com/en-us/python/api/azure-mgmt-resource/azure.mgmt.resource.applicationclient?view=azure-python#parameters
    #base_url: https://management.azure.com
```

The variables starting with `env/` above can be hidden in environment variables and octoDNS will automatically search for them in the shell. It is possible to also hard-code into the config file: eg, resource_group.

For management of DNS zones on [Azure Private DNS](https://learn.microsoft.com/en-us/azure/dns/private-dns-overview), use `class: octodns_azure.AzurePrivateProvider`. Note that this provider does not support dynamic records or root NS records.

### Support Information

#### Records

AzureProvider supports A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, and TXT

#### Root NS Records

AzureProvider supports root NS record management, but Azure requires that its own name servers are present in the list. If your configured name servers does not include them the provider will still leave them in place to comply.

#### Dynamic

AzureProvider has beta supports dynamic records.

Please read https://github.com/octodns/octodns/pull/706 for an overview of how dynamic records are designed and caveats of using them.

#### Healthchecks

AzureProvider supports the following healthcheck options for dynamic records (from [official documentation](https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-monitoring#configure-endpoint-monitoring)):

| Key | Description | Default |
|--|--|--|
| interval | This value specifies how often an endpoint is checked for its health from a Traffic Manager probing agent. You can specify two values here: 30 seconds (normal probing) and 10 seconds (fast probing). If no values are provided, the profile sets to a default value of 30 seconds. Visit the [Traffic Manager Pricing](https://azure.microsoft.com/pricing/details/traffic-manager) page to learn more about fast probing pricing. | 30 |
| timeout | This property specifies the amount of time the Traffic Manager probing agent should wait before considering a health probe check to an endpoint a failure. If the Probing Interval is set to 30 seconds, then you can set the Timeout value between 5 and 10 seconds. If no value is specified, it uses a default value of 10 seconds. If the Probing Interval is set to 10 seconds, then you can set the Timeout value between 5 and 9 seconds. If no Timeout value is specified, it uses a default value of 9 seconds. | 10 or 9 |
| num_failures | This value specifies how many failures a Traffic Manager probing agent tolerates before marking that endpoint as unhealthy. Its value can range between 0 and 9. A value of 0 means a single monitoring failure can cause that endpoint to be marked as unhealthy. If no value is specified, it uses the default value of 3. | 3 |

```
---
  octodns:
    azuredns:
      healthcheck:
        interval: 10
        timeout: 7
        num_failures: 4
```

### Development

See the [/script/](/script/) directory for some tools to help with the development process. They generally follow the [Script to rule them all](https://github.com/github/scripts-to-rule-them-all) pattern. Most useful is `./script/bootstrap` which will create a venv and install both the runtime and development related requirements. It will also hook up a pre-commit hook that covers most of what's run by CI.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/octodns/octodns-azure",
    "name": "octodns-azure",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Ross McFarland",
    "author_email": "rwmcfa1@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/04/73/cf3f7bbd5dafc54b10c93f6049ee4c59198d1f96380936106aae7f59163a/octodns_azure-0.0.9.tar.gz",
    "platform": null,
    "description": "## Azure DNS & TrafficManager provider for octoDNS\n\nAn [octoDNS](https://github.com/octodns/octodns/) provider that targets [Azure](https://azure.microsoft.com/en-us/services/dns/#overview).\n\n### Installation\n\n#### Command line\n\n```\npip install octodns-azure\n```\n\n#### requirements.txt/setup.py\n\nPinning specific versions or SHAs is recommended to avoid unplanned upgrades.\n\n##### Versions\n\n```\n# Start with the latest versions and don't just copy what's here\noctodns==0.9.14\noctodns-azure==0.0.1\n```\n\n##### SHAs\n\n```\n# Start with the latest/specific versions and don't just copy what's here\n-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns\n-e git+https://git@github.com/octodns/octodns-azure.git@ec9661f8b335241ae4746eea467a8509205e6a30#egg=octodns_azure\n```\n\n### Configuration\n\n```yaml\nproviders:\n  azure:\n    class: octodns_azure.AzureProvider\n    # Current support of authentication of access to Azure services is\n    # either using a Service Principal or deferring to an already authenticated\n    # `az` CLI instance.\n    # https://docs.microsoft.com/en-us/azure/azure-resource-manager/\n    #                        resource-group-create-service-principal-portal\n    # https://learn.microsoft.com/en-us/cli/azure/\n    #\n    # The authentication method, either 'client_secret' or 'cli'. This is\n    # 'client_secret' by default\n    client_credential_method: 'client_secret'\n    # The Azure Active Directory Application ID (aka client ID). Required for\n    # the 'client_secret' credential method.\n    client_id: env/AZURE_APPLICATION_ID\n    # Authentication Key Value: (note this should be secret). Required for the\n    # 'client_secret' credential method\n    key: env/AZURE_AUTHENTICATION_KEY\n    # Directory ID (aka tenant ID):\n    directory_id: env/AZURE_DIRECTORY_ID\n    # Subscription ID:\n    sub_id: env/AZURE_SUBSCRIPTION_ID\n    # Resource Group name:\n    resource_group: 'TestResource1'\n    # All are required to authenticate.\n    # Azure RetryPolicy Settings all of them are optional.\n    # https://azuresdkdocs.blob.core.windows.net/$web/python/azure-core/1.9.0/azure.core.pipeline.policies.html?highlight=retrypolicy#azure.core.pipeline.policies.RetryPolicy\n    # Total_retries default 10\n    #client_total_retries: 10\n    # status_retries default 3\n    #client_status_retries: 3\n    # The maximum number of record sets to return per page.\n    # https://learn.microsoft.com/en-us/rest/api/dns/record-sets/list-by-dns-zone\n    # Top default 100\n    #top: 100\n    # Azure AD authentication URL\n    # defaults to: https://login.microsoftonline.com\n    # docs: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.clientsecretcredential?view=azure-python#parameters\n    #authority: https://management.azure.com\n    # ARM Management URL\n    # defaults to: https://management.azure.com\n    # docs: https://docs.microsoft.com/en-us/python/api/azure-mgmt-resource/azure.mgmt.resource.applicationclient?view=azure-python#parameters\n    #base_url: https://management.azure.com\n```\n\nThe variables starting with `env/` above can be hidden in environment variables and octoDNS will automatically search for them in the shell. It is possible to also hard-code into the config file: eg, resource_group.\n\nFor management of DNS zones on [Azure Private DNS](https://learn.microsoft.com/en-us/azure/dns/private-dns-overview), use `class: octodns_azure.AzurePrivateProvider`. Note that this provider does not support dynamic records or root NS records.\n\n### Support Information\n\n#### Records\n\nAzureProvider supports A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, and TXT\n\n#### Root NS Records\n\nAzureProvider supports root NS record management, but Azure requires that its own name servers are present in the list. If your configured name servers does not include them the provider will still leave them in place to comply.\n\n#### Dynamic\n\nAzureProvider has beta supports dynamic records.\n\nPlease read https://github.com/octodns/octodns/pull/706 for an overview of how dynamic records are designed and caveats of using them.\n\n#### Healthchecks\n\nAzureProvider supports the following healthcheck options for dynamic records (from [official documentation](https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-monitoring#configure-endpoint-monitoring)):\n\n| Key | Description | Default |\n|--|--|--|\n| interval | This value specifies how often an endpoint is checked for its health from a Traffic Manager probing agent. You can specify two values here: 30 seconds (normal probing) and 10 seconds (fast probing). If no values are provided, the profile sets to a default value of 30 seconds. Visit the [Traffic Manager Pricing](https://azure.microsoft.com/pricing/details/traffic-manager) page to learn more about fast probing pricing. | 30 |\n| timeout | This property specifies the amount of time the Traffic Manager probing agent should wait before considering a health probe check to an endpoint a failure. If the Probing Interval is set to 30 seconds, then you can set the Timeout value between 5 and 10 seconds. If no value is specified, it uses a default value of 10 seconds. If the Probing Interval is set to 10 seconds, then you can set the Timeout value between 5 and 9 seconds. If no Timeout value is specified, it uses a default value of 9 seconds. | 10 or 9 |\n| num_failures | This value specifies how many failures a Traffic Manager probing agent tolerates before marking that endpoint as unhealthy. Its value can range between 0 and 9. A value of 0 means a single monitoring failure can cause that endpoint to be marked as unhealthy. If no value is specified, it uses the default value of 3. | 3 |\n\n```\n---\n  octodns:\n    azuredns:\n      healthcheck:\n        interval: 10\n        timeout: 7\n        num_failures: 4\n```\n\n### Development\n\nSee the [/script/](/script/) directory for some tools to help with the development process. They generally follow the [Script to rule them all](https://github.com/github/scripts-to-rule-them-all) pattern. Most useful is `./script/bootstrap` which will create a venv and install both the runtime and development related requirements. It will also hook up a pre-commit hook that covers most of what's run by CI.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Azure DNS & TrafficManager provider for octoDNS",
    "version": "0.0.9",
    "project_urls": {
        "Homepage": "https://github.com/octodns/octodns-azure"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a51ddc037e034ed281e929cc1f1442fa295ac240b3560c8e3c0eae012d18530",
                "md5": "e436df78782b52d90396e000b574fb0c",
                "sha256": "458f435ca615353cdfd06f8c10ce24e1b932acb015a5f8e20af34302aad4a968"
            },
            "downloads": -1,
            "filename": "octodns_azure-0.0.9-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e436df78782b52d90396e000b574fb0c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 22237,
            "upload_time": "2024-08-22T15:49:37",
            "upload_time_iso_8601": "2024-08-22T15:49:37.594650Z",
            "url": "https://files.pythonhosted.org/packages/0a/51/ddc037e034ed281e929cc1f1442fa295ac240b3560c8e3c0eae012d18530/octodns_azure-0.0.9-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0473cf3f7bbd5dafc54b10c93f6049ee4c59198d1f96380936106aae7f59163a",
                "md5": "226d4ed6fe58bdafb5f3a817659bd892",
                "sha256": "e3808e55730758624720714f4f7a64d598cb4828457dbc45263f61be691dd5c6"
            },
            "downloads": -1,
            "filename": "octodns_azure-0.0.9.tar.gz",
            "has_sig": false,
            "md5_digest": "226d4ed6fe58bdafb5f3a817659bd892",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 41981,
            "upload_time": "2024-08-22T15:49:39",
            "upload_time_iso_8601": "2024-08-22T15:49:39.583939Z",
            "url": "https://files.pythonhosted.org/packages/04/73/cf3f7bbd5dafc54b10c93f6049ee4c59198d1f96380936106aae7f59163a/octodns_azure-0.0.9.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-22 15:49:39",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "octodns",
    "github_project": "octodns-azure",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "octodns-azure"
}
        
Elapsed time: 0.61233s