For automating management of some g0v-related domains via config files.
The following damains can be managed here:
g0v.network
g0v.ca
c4nada.ca
t0ronto.ca
Changing or adding DNS records in main
branch of this repository will update
the actual domain records.
Inspired by g0v/domain
- YAML. A human-friendly configuration file format.
- octoDNS. Command-line tool to update domain records from files -- infra-as-code!
- GitHub Actions. Continuous integration platform to run automation in the cloud.
- octoDNS Sync action. Helps validate and run octoDNS.
The intended way to use this repository is via pull request directly on GitHub.
For support in managing common DNS changes, see docs/HOWTO.md
.
To learn to submit changes, see Contributing
(You should only need to clone this code locally if working on the automation itself. See Development section.)
To contribute changes to our automation, you'll likely want to be able to run it locally. Here's what you'll need:
Prerequisites
- Install Python 3
- Install
pipenv
. - Register a Cloudflare user account
- any non-special account will do
- Add each Cloudflare domain/zone/website (those mentioned above)
- you can "fake it" by initiating the import process, without activating (ie. no need to have access to the actual domain)
- Generate a properly scoped Cloudflare API token
- Documentation for creating tokens in your profile
- Permissions:
Zone | DNS | Edit
- Zone Resources:
Include | Specific zone | example.com
for each zone/domain- Alternatively:
Include | All zones from an account
- Alternatively:
git clone https://github.com/g0v-network/domains
cd domains
pipenv install
# Copy and modify as needed with API token
cp sample.env .env
# Validate your config locally
pipenv run octodns-validate --config-file config.yaml
# Do a dry run (no changes will be made)
pipenv run octodns-sync --config-file config.yaml
# Do a REAL run (!!!)
#
# WARNING: this is destructive, and will delete any records on a domain that
# are not present in your configuration files.
pipenv run octodns-sync --config-file config.yaml --doit
Please open an issue or pull request in order to create/update/delete any subdomains.
See docs/HOWTO.md
for detailed instructions.