mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-11-15 12:45:14 +08:00
82d4660816
- Support DelegationSet for Route53 (create-domains only) - Retry Route53 operations which fail for rate limits under large numbers of domains - Support for name_server_set for GCloud (create-domains only) - Docs for both
71 lines
3.3 KiB
Markdown
71 lines
3.3 KiB
Markdown
---
|
|
name: Google Cloud DNS
|
|
title: Google Cloud DNS Provider
|
|
layout: default
|
|
jsId: GCLOUD
|
|
---
|
|
|
|
# Google Cloud DNS Provider
|
|
|
|
## Configuration
|
|
|
|
For Google cloud authentication, DNSControl requires a JSON 'Service Account Key' for your project. Newlines in the private key need to be replaced with `\n`.Copy the full JSON object into your `creds.json` like so:
|
|
|
|
{% highlight json %}
|
|
{
|
|
"gcloud": {
|
|
"type": "service_account",
|
|
"project_id": "mydnsproject",
|
|
"private_key_id": "a05483aa208364c56716b384efff33c0574d365b",
|
|
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADL2dhlY7YZbx7tpsfksOX\nih0DbxhiQ==\n-----END PRIVATE KEY-----\n",
|
|
"client_email": "dnscontrolacct@mydnsproject.iam.gserviceaccount.com",
|
|
"client_id": "107996619231234567750",
|
|
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
|
"token_uri": "https://accounts.google.com/o/oauth2/token",
|
|
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
|
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dnscontrolsdfsdfsdf%40craigdnstest.iam.gserviceaccount.com",
|
|
"name_server_set" : "optional_name_server_set_name (contact your TAM)"
|
|
}
|
|
}
|
|
{% endhighlight %}
|
|
|
|
**Note**: The `project_id`, `private_key`, and `client_email`, are the only fields that are strictly required, but it is sometimes easier to just paste the entire json object in. Either way is fine. `name_server_set` is optional and requires special permission from your TAM at Google in order to setup (See [Name server sets](#name_server_sets) below)
|
|
|
|
See [the Activation section](#activation) for some tips on obtaining these credentials.
|
|
|
|
## Metadata
|
|
This provider does not recognize any special metadata fields unique to google cloud dns.
|
|
|
|
## Usage
|
|
Use this provider like any other DNS Provider:
|
|
|
|
{% highlight js %}
|
|
var REG_NAMECOM = NewRegistrar("name.com","NAMEDOTCOM");
|
|
var GCLOUD = NewDnsProvider("gcloud", "GCLOUD");
|
|
|
|
D("example.tld", REG_NAMECOM, DnsProvider(GCLOUD),
|
|
A("test","1.2.3.4")
|
|
);
|
|
{%endhighlight%}
|
|
|
|
## Activation
|
|
1. Go to your app-engine console and select the appropriate project.
|
|
2. Go to "API Manager > Credentials", and create a new "Service Account Key"
|
|
|
|
<img src="{{ site.github.url }}/assets/gcloud-json-screen.png" alt="New Service Account" style="width: 900px;"/>
|
|
|
|
3. Choose an existing user, or create a new one. The user requires the "DNS Administrator" role.
|
|
4. Download the JSON key and copy it into your `creds.json` under the name of your gcloud provider.
|
|
|
|
## New domains
|
|
If a domain does not exist in your Google Cloud DNS account, DNSControl
|
|
will *not* automatically add it with the `push` command. You'll need to do that via the
|
|
control panel manually or via the `create-domains` command.
|
|
|
|
## Name server sets
|
|
|
|
This optional feature lets you pin domains to a set of GCLOUD name servers. The `nameServerSet` field is exposed in their API but there is
|
|
currently no facility for creating a name server set. You need special permission from your technical account manager at Google and they
|
|
will enable it on your account, responding with a list of names to use in the `name_server_set` field above.
|
|
|
|
> `name_server_set` only applies on `create-domains` at the moment. Additional work needs to be done to support it during `push`
|