New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dns: T5144: Modernize dynamic dns operation (round 2) #2005
Conversation
5db9217
to
18962e7
Compare
5922484
to
eba9ea5
Compare
Smoketests updated, up for review. |
9766603
to
b57183a
Compare
interface-definitions/include/dns/dynamic-service-host-name-server.xml.i
Outdated
Show resolved
Hide resolved
I actually wonder if we can take out one level from the CLI:
You can reference the value of a tag node in your Python script by the ENV variable: |
Edit: Knocking off |
761e6d3
to
2a10a59
Compare
As you have placed the owner python script on the tagNode, it will be executed for every instance under the tagNode and it will always collect not only dat afor it's instance, but also for all the other instances. You can see this by the multiple lines of
When doing commit. For this to "properly" work I encourage you to make use of multiple ddclient instances (one per tagNode). THis is something we already do for e.g. the interfaces, where the owner is on the tagNode but we only process individual interfaces - see If multiple ddclient instances are not supported (e.g for PID file handling and tear-down) we might need to change the CLI again. |
I now see what you were alluding to on Slack.
I think this should be doable with ddclient by making disabling daemon mode and let systems timer handle them. But there are other aspects to consider:
|
Apply next round of configuration tree updates to 'service dns dynamic' with the following changes: - Migrate `service dns dynamic interface <interface> [use-web]` to `service dns dynamic address <interface>` or `service dns dynamic address web [web-options]` This communicates the intent that dynamic dns IP address is detected in only one way - using the `<interface>` or using an external web request, not both. - When using external web request, (`service dns dynamic address web`), external url is optional (`web-options url`). Ddclient defaults are used when unspecified, - Rename all config `login` to `username` for consistency and also to align better with alternative ddclient backends in consideration. - Apply global 'ipv6-enable' to per service 'ip-version: ipv6'. Selecting usage of IPv4 or IPv6 (or both simultaneously) is now at per service (protocol) level instead of global level. This allows more control on the ability to select IPv4 in some cases and IPv6 in some other cases wherever supported by the underlying ddclient protocol. - While the IP address (and by extension, the detection mechanism) is global, the way it is applied to a particular ddclient protocol depends on whether it supports IPv4 or IPv6 or both. - Related to the above, this also prevents generating incorrect config file (`ddclient.conf`) with multiple global sections leading to an unpredictable behavior of ddclient. - Implement provider (protocol) specific custom tweaks whenever possible (e.g., `zone`, `username`, `server` are not necessary in all cases). - Move service name from a combination of 'protocol' (with protocol config autodetected) and custom (with protocol config specified) to a single 'service' key. This allows for consisent setup of multiple config for the same ddclient protocol (with different options and credentials). This also avoid ambiguity with usual networking term 'protocol' and ddclient specific term 'protocol' (and can change with a move to a different backend). - Apply upfront XML constraints and validations consistently wherever applicable. - RFC2136 specific change: Rename rfc2136 config `record` to `host-name` for consistency. - Cloudflare specific change: While ddclient still supports authenticating with email and global auth key, skipping `username` in config will indicate the intent to use API token authentication (with special 'token' literal as `username`).
ddclient implementation of dualstack for dyndns2 protocol is targeted for dyn.com (dyndns.org) only. Dualstack won't work for other servers supporting dyndns2 protocol (for example, dyn.dns.he.net).
Create migration and bump package version from 0 -> 1 for dynamic dns
Templatize systemd override for ddclient service and move the generated override files in /run. This ensures that the override files are always generated afresh after boot. Additionally, simplify the systemd override file by removing the redundant/superfluous overrides.
2a10a59
to
c14825f
Compare
Updated with the previous implementation of CLI reinstated. That said, the necessary groundwork to self-contain cache config, PID config etc. is in place and can be taken up in the future depending on whether we settle with ddclient or any alternative backend. |
Apply next round of configuration tree updates to 'service dns dynamic' config tree.
Note: This requires vyos/vyos-build#349
Change Summary
service dns dynamic interface <interface> [use-web]
toservice dns dynamic address <interface>
orservice dns dynamic address web [web-options]
.This communicates the intent that dynamic dns IP address is detected in only one way - using the
<interface>
or using an external web request, not both.service dns dynamic address web
), external url is optional (web-options url
). Ddclient defaults are used when unspecified,login
tousername
for consistency and also to align better with alternative ddclient backends in consideration.ddclient.conf
) with multiple global sections leading to an unpredictable behavior of ddclient.zone
,username
,server
are not necessary in all cases).record
tohost-name
for consistency.username
in config will indicate the intent to use API token authentication (with special 'token' literal asusername
).dynamic dns
override files in /run.
Types of changes
Related Task(s)
Component(s) name
dns dynamic
How to test
Checklist: