mirror of
https://github.com/github/octodns.git
synced 2024-05-11 05:55:00 +00:00
Merge remote-tracking branch 'origin/main' into je/arpa-matching-fix
This commit is contained in:
@@ -14,16 +14,28 @@ Alternatively the value can be a dictionary with configuration options for the A
|
||||
---
|
||||
manager:
|
||||
auto_arpa:
|
||||
# Whether duplicate records should replace rather than error
|
||||
# (optiona, default False)
|
||||
populate_should_replace: false
|
||||
# Explicitly set the TTL of auto-created records, default is 3600s, 1hr
|
||||
ttl: 1800
|
||||
```
|
||||
|
||||
Once enabled a singleton `AutoArpa` instance, `auto-arpa`, will be added to the pool of providers and globally configured to run as the very last global processor so that it will see all records as they will be seen by targets. Further all zones ending with `arpa.` will be held back and processed after all other zones have been completed so that all `A` and `AAAA` records will have been seen prior to planning the `arpa.` zones.
|
||||
Once enabled a singleton `AutoArpa` instance, `auto-arpa`, will be added to the pool of providers and globally configured to run as the very last global processor so that it will see all records as they will be seen by targets. Further all zones ending with `arpa.` will be held back and processed after all other zones have been completed so that all `A` and `AAAA` records will have been seen prior to planning the `arpa.` zones.
|
||||
|
||||
In order to add `PTR` records for a zone the `auto-arpa` source should be added to the list of sources for the zone.
|
||||
|
||||
```yaml
|
||||
# Zones are matched on suffix so `0.10.in-addr.arpa.` would match anything
|
||||
# under `10.0/16` or `0.8.e.f.ip6-.arpa.` would match any IPv6 address under
|
||||
# `fe80::`, 0.0.10 here matches 10.0.0/24.
|
||||
0.0.10.in-addr.arpa.:
|
||||
sources:
|
||||
# In most cases you'll have some statically configured records combined in
|
||||
# with the auto-generated records as shown here, but that's not strictly
|
||||
# required and this could just be `auto-arpa`.
|
||||
# would throw an DuplicateRecordException.
|
||||
- config
|
||||
- auto-arpa
|
||||
targets:
|
||||
- ...
|
||||
@@ -44,24 +56,23 @@ providers:
|
||||
class: octodns.provider.yaml.YamlProvider
|
||||
directory: tests/config
|
||||
|
||||
powerdns:
|
||||
class: octodns_powerdns.PowerDnsProvider
|
||||
host: 10.0.0.53
|
||||
port: 8081
|
||||
api_key: env/POWERDNS_API_KEY
|
||||
route53:
|
||||
class: octodns_route53.Route53Provider
|
||||
access_key_id: env/AWS_ACCESS_KEY_ID
|
||||
secret_access_key: env/AWS_SECRET_ACCESS_KEY
|
||||
|
||||
zones:
|
||||
exxampled.com.:
|
||||
sources:
|
||||
- config
|
||||
targets:
|
||||
- powerdns
|
||||
- route53
|
||||
|
||||
0.0.10.in-addr.arpa.:
|
||||
sources:
|
||||
- auto-arpa
|
||||
targets:
|
||||
- powerdns
|
||||
- route53
|
||||
```
|
||||
|
||||
#### config/exxampled.com.yaml
|
||||
|
@@ -11,10 +11,16 @@ from .base import BaseProcessor
|
||||
|
||||
|
||||
class AutoArpa(BaseProcessor):
|
||||
def __init__(self, name, ttl=3600):
|
||||
def __init__(self, name, ttl=3600, populate_should_replace=False):
|
||||
super().__init__(name)
|
||||
self.log = getLogger(f'AutoArpa[{name}]')
|
||||
self.log.info(
|
||||
'__init__: ttl=%d, populate_should_replace=%s',
|
||||
ttl,
|
||||
populate_should_replace,
|
||||
)
|
||||
self.ttl = ttl
|
||||
self.populate_should_replace = populate_should_replace
|
||||
self._records = defaultdict(set)
|
||||
|
||||
def process_source_zone(self, desired, sources):
|
||||
@@ -56,7 +62,7 @@ class AutoArpa(BaseProcessor):
|
||||
name,
|
||||
{'ttl': self.ttl, 'type': 'PTR', 'values': fqdns},
|
||||
)
|
||||
zone.add_record(record)
|
||||
zone.add_record(record, replace=self.populate_should_replace)
|
||||
|
||||
self.log.info(
|
||||
'populate: found %s records', len(zone.records) - before
|
||||
|
Reference in New Issue
Block a user