Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/solvaholic/octodns-sync

GitHub Action to test and deploy DNS settings with OctoDNS
https://github.com/solvaholic/octodns-sync

action github-actions

Last synced: 4 months ago
JSON representation

GitHub Action to test and deploy DNS settings with OctoDNS

Awesome Lists containing this project

README

        

# octodns-sync

This action runs `octodns-sync` from [octodns/octodns](https://github.com/octodns/octodns) to deploy your DNS config to any cloud.

octodns allows you to manage your DNS records in a portable format and publish changes across different DNS providers. It is extensible and customizable.

When you manage your octodns DNS configuration in a GitHub repository, this [GitHub Action](https://help.github.com/actions/getting-started-with-github-actions/about-github-actions) allows you to test and publish your changes automatically using a [workflow](https://help.github.com/actions/configuring-and-managing-workflows) you define.

## Example workflow

```yaml
name: octodns-sync

on:
# Deploy config whenever DNS changes are pushed to main.
push:
branches:
- main
paths:
- '*.yaml'

jobs:
publish:
name: Publish DNS config from main
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- run: pip install -r requirements.txt
- uses: solvaholic/octodns-sync@main
with:
config_path: public.yaml
doit: '--doit'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.route53_aws_key_id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.route53_aws_secret_access_key }}
```

## Inputs

### Secrets

To authenticate with your DNS provider, this action uses
[encrypted secrets](https://help.github.com/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#about-encrypted-secrets)
you've configured on your repository. For example, if you use Amazon
Route53, [create these secrets](https://help.github.com/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets)
on the repository where you store your DNS configuration:

```text
"route53-aws-key-id": "YOURIDGOESHERE"
"route53-aws-secret-access-key": "YOURKEYGOESHERE"
```

Then include them as environment variables in your workflow. For example:

```yaml
env:
AWS_ACCESS_KEY_ID: ${{ secrets.route53-aws-key-id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.route53-aws-secret-access-key }}
```

### `config_path`

Path, relative to your repository root, of the config file you would like octodns to use.

Default `"public.yaml"`.

### `doit`

Really do it? Set "--doit" to do it; Any other string to not do it.

Default `""` (empty string).

### `force`

Run octodns-sync in force mode? Set "Yes" to do it.

Default `"No"`.

### `add_pr_comment`

Add plan as a comment, when triggered by a pull request? Set "Yes" to do it.

Default `"No"`.

If you would like to add the plan `octodns-sync` generates as a pull request comment, be sure to also read [_Add pull request comment_](#add-pull-request-comment) below.

### `pr_comment_token`

Provide a token to use, if you set `add_pr_comment` to "Yes".

Default `"Not set"`.

### `zones`

Space separated list of zones to sync, leave empty to sync all zones in the config file.

Default: `""` (empty string)

## Outputs

### plan

If you have configured `plan_outputs` for **octodns**, PlanHtml or PlanMarkdown output will be written to `$GITHUB_WORKSPACE/octodns-sync.plan`.

For convenience, this file is output by this action as the `plan` output so you may use it in subsequent steps.

### log

`octodns-sync` does not write its output to the workflow run log. Its output will be written to `$GITHUB_WORKSPACE/octodns-sync.log`.

For convenience, this file is output by this action as the `log` output so you may use it in subsequent steps.

### Add pull request comment

If you would like this action to add the `octodns-sync` plan to a pull request comment, configure `plan_outputs` in your **octodns** configuration, for example `public.yml`:

```yaml
manager:
plan_outputs:
html:
class: octodns.provider.plan.PlanHtml
```

Then configure your workflow to run this action on the `pull_request` event, set `add_pr_comment` to "Yes", and provide an API token. For example:

```yaml
on:
pull_request:
jobs:
test:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: '3.10'
- run: pip install -r requirements.txt
- uses: solvaholic/octodns-sync@main
with:
config_path: public.yaml
add_pr_comment: 'Yes'
pr_comment_token: '${{ github.token }}'
```

Please note: This configuration will add a new comment to the pull request each time it's triggered. To find out how to change that, check out [issue #41](https://github.com/solvaholic/octodns-sync/issues/41) and **[docs/add_pr_comment.md](docs/add_pr_comment.md)**.