From aac78c1c12df9ff50adb78a03eaf1a0168c23d09 Mon Sep 17 00:00:00 2001 From: Koen Rouwhorst Date: Sat, 5 Jan 2019 15:12:33 +0100 Subject: [PATCH] Updated README. --- README.md | 174 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 150 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index a3c1178..3144500 100644 --- a/README.md +++ b/README.md @@ -3,32 +3,158 @@ Deploy your DNS configuration using [GitHub Actions](https://github.com/actions) using [DNSControl](https://github.com/StackExchange/dnscontrol/). -## Supported providers - -Not all [providers](https://stackexchange.github.io/dnscontrol/provider-list) are -supported yet. - -- [ ] Active Directory PowerShell -- [ ] BIND -- [x] Cloudflare -- [x] DigitalOcean -- [x] DNSimple -- [ ] Gandi -- [ ] Google Cloud DNS -- [ ] HEXONET -- [x] Linode -- [ ] Name.com -- [ ] Namecheap -- [x] NS1 -- [ ] OVH -- [x] Route 53 -- [ ] SoftLayer DNS -- [ ] Vultr - ## Usage -TODO +These are the three relevant sub commands to use with this action. + +### check + +Run the action with the 'check' argument in order to check and validate the `dnscontrol.js` +file. This action does not communicate with the DNS providers, hence does not require +any secrets to be set. + +```workflow +action "DNSControl check" { + uses = "koenrh/dnscontrol-action@master" + args = "check" +} +``` + +### preview + +Run the action with the 'preview' argument to check what changes need to be made. +It prints out what DNS records are expected to be created, modified or deleted. +This action requires the secrets for the specified DNS providers. + +```workflow +action "DNSControl preview" { + uses = "koenrh/dnscontrol-action@master" + args = "preview" + secrets = ["CLOUDFLARE_API_USER", "CLOUDFLARE_API_KEY"] +} +``` + +This is the action you probably want to run for each branch so that proposed changes +could be verified before an authorized person merges these changes into `master`. + +### push + +Run the action with the 'push' arugment to publish the changes to the specified +DNS providers. + +Running the action with the 'push' argument will publish the changes with the +specified DNS providers. You should probably only use this command combined with +the GitHub [Filters action](https://github.com/actions/bin/tree/master/filter#filters-for-github-actions) +to make sure that only changes in the `master` branch are deployed to production. + +```workflow +action "DNSControl push" { + uses = "koenrh/dnscontrol-action@master" + args = "push" + secrets = ["CLOUDFLARE_API_KEY", "CLOUDFLARE_API_USER"] +} +``` + +You should probably only use this command combined with the GitHub [Filters action](https://github.com/actions/bin/tree/master/filter#filters-for-github-actions) +to make sure that only changes in the `master` branch are deployed to production. ## Secrets -TODO +Depending on the DNS providers that are used, this action requires secrets to be +set. + +### Cloudflare + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/cloudflare) + +- `CLOUDFLARE_API_USER` +- `CLOUDFLARE_API_KEY` +- `CLOUDFLARE_ACCOUNT_ID` (optional) +- `CLOUDFLARE_ACCOUNT_NAME` (optional) + +### DigitalOcean + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/digitalocean) + +- `DIGITALOCEAN_OAUTH_TOKEN` + +### DNSimple + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/dnsimple) + +- `DNSIMPLE_ACCOUNT_ACCESS_TOKEN` + +### Gandi + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/gandi) + +- `GANDI_API_KEY` + +### Google CLOUD DNS + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/gcloud) + +- `GOOGLE_CLOUD_PROJECT_ID` +- `GOOGLE_CLOUD_PRIVATE_KEY_ID` +- `GOOGLE_CLOUD_PRIVATE_KEY` +- `GOOGLE_CLOUD_CLIENT_EMAIL` +- `GOOGLE_CLOUD_CLIENT_ID` +- `GOOGLE_CLOUD_CLIENT_X509_CERT_URL` + +### Linode + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/linode) + +- `LINODE_ACCESS_TOKEN` + +### Name.com + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/name.com) + +- `NAME_COM_API_USER` +- `NAME_COM_API_KEY` +- `NAME_COM_API_URL` (optional) + +### Namecheap + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/namecheap) + +- `NAMECHEAP_API_USER` +- `NAMECHEAP_API_KEY` +- `NAMECHEAP_BASE_URL` (optional) + + +### NS1 + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/ns1) + +- `NSONE_API_KEY` + +### OVH + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/ovh) + +- `OVH_APP_KEY` +- `OVH_APP_SECRET_KEY` +- `OVH_CONSUMER_KEY` + +### Amazon Route 53 + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/route53) + +- `AWS_ACCESS_KEY_ID` +- `AWS_SECRET_ACCESS_KEY` +- `AWS_SESSION_TOKEN` (optional) + +### SoftLayer + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/softlayer) + +- `SOFTLAYER_USERNAME` +- `SOFTLAYER_API_KEY` + +### Vultr + +[Documentation](https://stackexchange.github.io/dnscontrol/providers/vultr) + +- `VULTR_TOKEN`