-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
zerotier: split configuration #24773
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,39 @@ | ||
|
||
config zerotier sample_config | ||
config zerotier 'global' | ||
# Sets whether ZeroTier is enabled or not | ||
option enabled 0 | ||
|
||
# persistent configuration folder (for ZT controller mode) | ||
# Sets the ZeroTier listening port (default 9993; set to 0 for random) | ||
#option port '9993' | ||
# Client secret (leave blank to generate a secret on first run) | ||
option secret '' | ||
# Path of the optional file local.conf (see documentation at | ||
# https://docs.zerotier.com/config#local-configuration-options) | ||
#option local_conf_path '/etc/zerotier.conf' | ||
# Persistent configuration directory (to perform other configurations such | ||
# as controller mode or moons, etc.) | ||
#option config_path '/etc/zerotier' | ||
# copy <config_path> to RAM to prevent writing to flash (for ZT controller mode) | ||
# Copy the contents of the persistent configuration directory to memory | ||
# instead of linking it, this avoids writing to flash | ||
#option copy_config_path '1' | ||
|
||
#option port '9993' | ||
|
||
# path to the local.conf | ||
#option local_conf '/etc/zerotier.conf' | ||
# Network configuration, you can have as many configurations as networks you | ||
# want to join (the network name is optional) | ||
config network 'mynet' | ||
# Identifier of the network you wish to join | ||
option id '8056c2e21c000001' | ||
# Network configuration parameters (all are optional, if not indicated the | ||
# default values are set, see documentation at | ||
# https://docs.zerotier.com/config/#network-specific-configuration) | ||
option allow_managed '1' | ||
option allow_global '0' | ||
option allow_default '0' | ||
option allow_dns '0' | ||
|
||
# Generate secret on first start | ||
option secret '' | ||
# Example of a second network (unnamed as it is optional) | ||
#config network | ||
# option id '1234567890123456' | ||
# option allow_managed '1' | ||
# option allow_global '0' | ||
# option allow_default '0' | ||
# option allow_dns '0' | ||
|
||
# Join a public network called Earth | ||
list join '8056c2e21c000001' | ||
#list join '<other_network>' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Convert the join list into networks | ||
nets=$(uci -q get zerotier.@zerotier[0].join) | ||
|
||
if [ -n "$nets" ]; then | ||
for net in ${nets}; do | ||
sid=$(uci add zerotier network) | ||
uci set zerotier.${sid}.id=${net} | ||
done | ||
uci delete zerotier.@zerotier[0].join | ||
|
||
# Rename local conf (only if defined) | ||
uci -q rename zerotier.@zerotier[0].local_conf='local_conf_path' || true | ||
|
||
# Rename configuration to global | ||
uci rename zerotier.@zerotier[0]='global' | ||
|
||
# Commit all changes | ||
uci commit zerotier | ||
fi |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If allowing network specific config is the goal of this pull request, I think it's possible to extend current uci config while not breaking backward compatibility.
join
is still an config option inzerotier
config section, with network specific configuration in addednetwork
section. E.g.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The idea really goes beyond that. What we pursue is what is commented in the MR, to simplify the configuration and the startup script and to eliminate a possibility (the one of starting multiple zerotier daemons) that we know that it does not work correctly and that in addition it does not make too much sense.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Limiting number of zerotier daemon to 1 is reasonable if it's known fact that multiple instances do not work. It's a fix, not going to break anyone's expectation.
From a user point of view, I do not see how the current zerotier uci config is more complex than the new one. Rewriting the init script is another thing though. It's impl detail. Compat is my concern. As a user really I do not intend to check the code unless something breaks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, the reduction of complexity is for the future and possible new configuration options that may be included in the file. Besides, this configuration is more similar to the one used in other packages, so I understand that being something “more known” it will be less complex for the user.
In any case with the uci-defaults script we have added the configuration migration is covered. I have tested it a few times and it works correctly so there should be no more problems.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Multiple Zerotier instances are not useful, since a single instance can connect to multiple networks as well.
Also the current configuration does not allow any settings on a per network basis. This chance is going to fix this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yousong it is true that with the example that you comment the current configuration would work as it is without changing, but having the migration script that does exactly the same it is preferable to go to the new configuration and leave the package ready for future possibilities.
Let's say that right now we do what you say, we leave a configuration that looks “weird” because I have to declare twice the network I want to join (first a “list join” and then a “network config”). In the next update we would have to change it again and again we would be at “square one”.
I fully understand the initial reluctance of not making the change without the migration script, but now that the
/etc/uci-defaults/80-zt-migration
is already included I don't see the problem.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why "In the next update we would have to change it again"?
Looking at it from another angle, I see it as a convenience feature. Only those present in
join
list will be joined. We can easily join/leave a network by inserting/removing a#
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is very likely that this will have to be done if new functionality is added.
You can do the same by commenting out the only two mandatory lines when configuring a network, e.g:
The advantage of being able to name the networks is that they are easily identifiable by the user.
As I said before, having a migration script that adapts the current configuration to the new one, I don't see the problem.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact, we have not mentioned it, but one of the objectives we are looking for with this change is precisely the possibility that the user can name their networks and thus be able to identify them much more easily.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
name
option can be added to thenetwork
section if needed.Well, concerns expressed and still I am not a fan of the incompat change. The migration script will be a unnecessary burden. That's it for me at the moment. Maintainers have the say.