[bind10-dev] How to organize zone config items in bind10?

Jerry Scharf scharf at isc.org
Fri Aug 27 15:56:48 UTC 2010


Shane,

In my thinking, the modules should carry the configuration data that 
they need and that it is the idea of the front end to take something 
like a BIND 9 config file or other abstract form and chop it up as the 
modules need it.

There are three areas of thinking that lead me to this opinion:

Though it may sound strange, I consider BIND 9 config files (and rndc) 
to be the 'user interface' of BIND 9. I see different people wanting 
different user interfaces to BIND 10. One is to run with the BIND 9 
interface. A second is to use someone's existing management tool like 
infoblox. A third way is to use what we are considering for the BIND 10 
command tool. Each of these has a different model for the data and 
metadata (config elements are the obvious form of metadata.) This leads 
one to the question "do we put all these different models in the server 
configuration, pick one or don't put any of these in the server 
configuration itself?" Being a lazy designer, I naturally lean toward 
not putting any of them in the server itself.

I think this becomes more clear when I think through what extensibility 
requires. As others begin to replace and add modules to the server, they 
are going to create new configuration needs. They may also choose to 
reconfigure the configuration elements that the BIND 10 team allocate in 
our modules. Trying to keep all this straight within the server itself 
seems sure to cause problems. The new module designers may not even 
support their modules with the BIND 9 user interface, you use their 
management interface with servers running their modules.

Finally, it comes from my view that the server is designed to run at 
network speeds using efficient local data. Management tools are designed 
to run at human speeds using human concepts. The BIND 9 user interface 
is a compromise of the two and can cause problems for each side.


If we concentrate the problem of translating upper level models to the 
exact requirements of the modules in the management layer, new modules 
are much more able to create and refactor configuration elements to 
their need.

In Likun's case, I see the 'also notify' section for zone X should being 
stored in the xfrout module section and in a form that xfrout wants it.

This does put more burden on the command tool, BIND 9 emulator and the 
like, but I believe it is the best route. A new module requires the 
associated management functions for its "care and feeding." It also 
requires documentation of the configuration needs of a given module at a 
level that someone can read the documentation and successfully translate 
their management data model into correct control of the server module. 
Good design on these configuration structures will make many friends. :)


Do others agree with this? Are there better ideas out there?

warmly,
jerry

On 08/27/2010 05:59 AM, Shane Kerr wrote:
> Likun,
>
> On Tue, 2010-08-03 at 21:10 +0800, ZhangLikun wrote:
>    
>> There are several config items for one zone,  master_addr, also_notify,
>> allow_update, etc.  Since the items are used by different modules, so it
>> makes sense to distribute these config items to different modules, like:
>>
>> Xfrin has config item: master_addr
>> Xfrout has config item: also_notify
>> Update has config item: allow_update
>>
>> And bind10 also need one "zone_list" config item, to make clear which zones
>> bind10 is servicing, my suggestion is let config manager module hold the
>> config item 'zone_list'.
>>
>> My question is : does it need to let config manager hold all the config
>> option for one zone? So that the duplicated zone list information can be
>> avoided in xfrin, xfrout and other modules. Like, config manager will have
>> the config data like:
>>      Zones :  [
>> 	 { 'cn' :  [  {  ' master':  [master_list]  },
>>                 {  'also_notify' :  [notify_slave_list]  },
>>                 {  'allow_update' :  [address_list]  },
>> 		      .... some_other_options....
>>              ]
>>
>>        'com'  :  [  ...zone's_options.... ]
>>        'net' :  [  ...zone's_options.... ]
>>       }
>>
>> Any suggestion?
>>      
> Hopefully I did not miss a discussion about this. :-P
>
> In any case, avoiding duplication makes sense to me. I think it is okay
> for modules to use configuration for "other" modules, as long as this is
> done in a controlled way.
>
> --
> Shane
>
> _______________________________________________
> bind10-dev mailing list
> bind10-dev at lists.isc.org
> https://lists.isc.org/mailman/listinfo/bind10-dev
>    



More information about the bind10-dev mailing list