{"id":19349099,"url":"https://github.com/digineo/dnsgit","last_synced_at":"2025-04-23T06:30:49.012Z","repository":{"id":8705081,"uuid":"10371555","full_name":"digineo/dnsgit","owner":"digineo","description":"Describe your DNS zones in a simple DSL and manage them with Git.","archived":false,"fork":false,"pushed_at":"2020-06-29T18:48:07.000Z","size":103,"stargazers_count":18,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-02T09:22:27.822Z","etag":null,"topics":["configuration-management","dns","dns-git","dsl","ruby","zone-files","zones"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/digineo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-05-29T23:33:41.000Z","updated_at":"2023-05-23T08:38:28.000Z","dependencies_parsed_at":"2022-07-09T21:00:23.309Z","dependency_job_id":null,"html_url":"https://github.com/digineo/dnsgit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digineo%2Fdnsgit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digineo%2Fdnsgit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digineo%2Fdnsgit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/digineo%2Fdnsgit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/digineo","download_url":"https://codeload.github.com/digineo/dnsgit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250384720,"owners_count":21421783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configuration-management","dns","dns-git","dsl","ruby","zone-files","zones"],"created_at":"2024-11-10T04:24:44.341Z","updated_at":"2025-04-23T06:30:48.644Z","avatar_url":"https://github.com/digineo.png","language":"Ruby","readme":"# DNS Git\n\n[![CircleCI](https://circleci.com/gh/digineo/dnsgit.svg?style=svg)](https://circleci.com/gh/digineo/dnsgit)\n\nRun your own DNS servers and manage your zones easily with Git.\n\nThis piece of free software gives you the ability to describe your zone\nfiles in a **simple DSL** (Domain Specific Language) with **templates**\nand store everything in a **Git repository**.\n\nEvery time you push your changes, a hook generates all zone files and,\nif necessary, increases serial numbers. This has been inspired by\n[LuaDNS](http://www.luadns.com/).\n\n\n## Pre-requisites\n\nDNS Git has been tested with version 4.1.1 of the\n[PowerDNS Authoritative Server](https://www.powerdns.com/).\n\nDNS Git supports two PowerDNS backends: BIND and SQLite3.\n\nYou need to have Git and a recent version of Ruby (\u003e= v2.4) installed on\nyour server. If you want to use the SQLite backend, you'll also need\ndevelopment packages for Ruby and libsqlite3, plus a C compiler (on\nDebian-based OS, `ruby-dev`, `libsqlite3-dev` and `build-essential` should\nsuffice).\n\n\n## Installation\n\nFirst, clone the repository (on the machine your PowerDNS server runs on):\n\n```console\n$ ssh root@yourserver.example.com\n# git clone git://github.com/digineo/dnsgit /opt/dnsgit\n# cd /opt/dnsgit\n```\n\nThen install the required libraries using bundler.\n\nDepending on whether or not you have PowerDNS configured with\n`launch=bind` or `launch=gsqlite3`, you need to execute one of these\ncommands:\n\n```console\n# bundle install --without=sqlite\n# bundle install --with=sqlite\n```\n\nFinally, initialize a sample configuration repository:\n\n```console\n# bin/init\nPlease clone and update the configuration:\n  git clone root@yourserver.example.com:/opt/dnsgit/data dns-config\n```\n\n\n## Configuration\n\nRun these steps locally on your own machine:\n\n```console\n$ git clone root@yourserver.example.com:/opt/dnsgit/data dns-config\n$ cd dns-config\n```\n\nThe first thing you should do after setup is modify the contained\n`config.yml` and update the values according to your PowerDNS\ninstallation (remove `sqlite:` section for `launch=bind` or remove\n`bind:` section for `launch=gsqlite3`).\n\nOnce that's done, you can update the zones.\n\nThen push your changes back to the server.\n\n```console\n$ git add -A\n$ git commit -m \"my commit message\"\n$ git push\n```\n\nOn error, your commit will be rejected.\n\n\n### Examples\n\nTake a look at the [lib/example/](lib/example/) and [tests](test/unit/)\nfolders.\n\n\n## Development\n\nTo run tests, simply invoke `rake`.\n\n## Debug output\n\nTo get a detailed log of what happens on a `git push`, modify\n`bin/hooks/pre-receive` on the server:\n\n```diff\n # Generate Zones\n-ruby -I$basedir/lib $basedir/bin/run.rb\n+DNSGIT_DEBUG=all ruby -I$basedir/lib $basedir/bin/run.rb\n```\n\nYou can reduce the log amount by setting `DNSGIT_DEBUG` to a comma-separated\nlist of (lowercase) class names. Known log-enabled classes include:\n\n- `bind` - for the BIND backend\n- `sqlite` - for the SQLite backend\n- `work` - for details in the SQLite backend\n- `zone` - logs effects of your DSL files\n\nThe class names of log-enabled classes are printed in magenta in the\nlog output.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigineo%2Fdnsgit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigineo%2Fdnsgit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigineo%2Fdnsgit/lists"}