Default config file name 1.6 vs. 2.0
Hello, I would like to suggest to change the default name of the configuration file for bird version 2.0. The two bird versions cannot use the same file because of syntax change. And some of us distribute the file via configuration management tools (like ansible etc.). This makes upgrade path rather difficult and unnecessarily error-prone: you need to synchronize exchange of the version of the configuration file with upgrade (or downgrade! That can be necessary too!) of the bird package. Whereas if different versions used different files, you could distribute both files with you configuration management tool in advance, and then gradually upgrade the package, with easy rollback if things do not go well. Even if configuration management is not used, it is still more convenient to be able to start one or the other version of the daemon without the need to specify alternative configuration, or replacing the file. Thanks for consideration! Eugene
On 26/01/2019 14:55, Eugene Crosser wrote:> I would like to suggest to change the default name of the configuration file for
bird version 2.0. Wouldn't using the -c switch[0][1] to give the bird daemon a /path/to/my/bird-1.6/bird.conf , /path/to/my/bird-2.0/bird.conf be sufficient?
[0]: https://bird.network.cz/?get_doc&v=16&f=bird-1.html#ss1.3 [1]: https://bird.network.cz/?get_doc&v=20&f=bird-1.html#ss1.3 -Christoffer
On 26/01/2019 15:26, Christoffer Hansen wrote:
On 26/01/2019 14:55, Eugene Crosser wrote:> I would like to suggest to change the default name of the configuration file for
bird version 2.0. Wouldn't using the -c switch[0][1] to give the bird daemon a /path/to/my/bird-1.6/bird.conf , /path/to/my/bird-2.0/bird.conf be sufficient?
When you install a package in your distro, you are not given an opportunity to specify this option. Especially if you use some automation tools for package management. You will have to move the host out of production, upgrade the package, change the init script to use `-c <smth else>` and move the host back in production. If maintainers of the distro packages included that option with different paths for different versions, that would solve the problem. But they will probably forget / not bother to do that. In my opinion, it is safer to change the name "upstream". Thanks, Eugene
I can suggest changing it so: bird 2 would try to open new config file, say, bird2.conf and only if there's no such a file, would fall back to bird.conf. -- End of message. Next message?
On Sat, Jan 26, 2019 at 02:55:29PM +0100, Eugene Crosser wrote:
Hello,
I would like to suggest to change the default name of the configuration file for bird version 2.0.
Hello We noticed the issue when working on Debian packages for BIRD 2.0. Renaming the config file in upstream is not a good idea, as some distributions already have packages for BIRD 2.0, so that would complicate life for them. Debian BIRD package use /etc/bird/bird.conf instead of /etc/bird.conf (by compile-time option), so it was suggested to use /etc/bird2/bird.conf for BIRD 2.0, but i opposed to that on the grounds that long-term goal is to abandon 1.6 branch and then rename bird2 package back to bird without other user-visible disruptions (i.e. renaming config file or binaries back).
The two bird versions cannot use the same file because of syntax change. And some of us distribute the file via configuration management tools (like ansible etc.). This makes upgrade path rather difficult and unnecessarily error-prone: you need to synchronize exchange of the version of the configuration file with upgrade (or downgrade! That can be necessary too!) of the bird package.
Whereas if different versions used different files, you could distribute both files with you configuration management tool in advance, and then gradually upgrade the package, with easy rollback if things do not go well.
Well, workaround would be to have config files in separate files and /etc/bird.conf just a symlink, which can be simply changed after package upgrade / downgrade. I would say that the cleanest solution would be to build BIRD 1.6 for IPv4 with compile-time option --with-suffix=4, so it would be bird4, birdc4, and bird4.conf, (that is how i used it personally, just for the sake of symmetry with IPv6 version). But AFAIK distributions did not use that and it is a bit late now to change that.
Even if configuration management is not used, it is still more convenient to be able to start one or the other version of the daemon without the need to specify alternative configuration, or replacing the file.
Note that regardless of config files, binaries and init-files are also without suffix, so bird and bird2 packages are conflicting. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On 1/28/19 4:18 PM, Ondrej Zajicek wrote:
I would like to suggest to change the default name of the configuration file for bird version 2.0.
[...]
Well, workaround would be to have config files in separate files and /etc/bird.conf just a symlink, which can be simply changed after package upgrade / downgrade.
When you are using automation for configuration and package management, such approach complicates the process a lot. Instead of just "apt install <new or old package>" automation tool would need a distribute a script and execute it before/after upgrading the package. And it has to be specific for this particular package. It is not insurmountable, it just seriously complicates otherwise trivial job of replacing the package. If changing the name upstream is not possible now, maybe a good enough(?) solution would be to "strongly encourage" package maintainers to specify different path for the config file? I am interested in a debian (stretch) package myself. Regards, Eugene
participants (4)
-
Christoffer Hansen -
Eugene Crosser -
Igor Podlesny -
Ondrej Zajicek