summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Kosek <mkosek@redhat.com>2012-03-15 13:51:59 +0100
committerRob Crittenden <rcritten@redhat.com>2012-03-26 00:33:45 -0400
commit52aa008b8719f4ea678efa8957794bb6dcd13893 (patch)
tree2e15bb800d3f25974badb2acceef61b3e9e20234
parentb944ad44b5ac66a253b28613cf0b722c4d4ad444 (diff)
downloadfreeipa-52aa008b8719f4ea678efa8957794bb6dcd13893.tar.gz
freeipa-52aa008b8719f4ea678efa8957794bb6dcd13893.tar.xz
freeipa-52aa008b8719f4ea678efa8957794bb6dcd13893.zip
Improve user awareness about dnsconfig
Global DNS configuration is a nice tool to maintain a common DNS settings stored in LDAP which are then used for all enrolled IPA servers. However, the settings stored in LDAP override local settings in named.conf on DNS servers. This patch adds more information about global DNS configuration options in install scripts and DNS module help. https://fedorahosted.org/freeipa/ticket/2525
-rwxr-xr-xinstall/tools/ipa-dns-install3
-rwxr-xr-xinstall/tools/ipa-replica-install4
-rwxr-xr-xinstall/tools/ipa-server-install3
-rw-r--r--ipalib/plugins/dns.py22
-rw-r--r--ipaserver/install/bindinstance.py20
5 files changed, 52 insertions, 0 deletions
diff --git a/install/tools/ipa-dns-install b/install/tools/ipa-dns-install
index 096020c5e..b540630f4 100755
--- a/install/tools/ipa-dns-install
+++ b/install/tools/ipa-dns-install
@@ -232,6 +232,9 @@ def main():
print "=============================================================================="
print "Setup complete"
print ""
+ bind.check_global_configuration()
+ print ""
+ print ""
print "\tYou must make sure these network ports are open:"
print "\t\tTCP Ports:"
print "\t\t * 53: bind"
diff --git a/install/tools/ipa-replica-install b/install/tools/ipa-replica-install
index 65f5229df..07b1781ee 100755
--- a/install/tools/ipa-replica-install
+++ b/install/tools/ipa-replica-install
@@ -229,6 +229,10 @@ def install_bind(config, options):
config.domain_name, forwarders, options.conf_ntp, reverse_zone)
bind.create_instance()
+ print ""
+ bind.check_global_configuration()
+ print ""
+
def install_dns_records(config, options):
if not bindinstance.dns_container_exists(config.master_host_name,
diff --git a/install/tools/ipa-server-install b/install/tools/ipa-server-install
index 9c7388b40..1dd02ba87 100755
--- a/install/tools/ipa-server-install
+++ b/install/tools/ipa-server-install
@@ -1019,6 +1019,9 @@ def main():
api.Backend.ldap2.connect(bind_dn="cn=Directory Manager", bind_pw=dm_password)
bind.create_instance()
+ print ""
+ bind.check_global_configuration()
+ print ""
else:
bind.create_sample_bind_zone()
diff --git a/ipalib/plugins/dns.py b/ipalib/plugins/dns.py
index f47b180af..e69686cbf 100644
--- a/ipalib/plugins/dns.py
+++ b/ipalib/plugins/dns.py
@@ -189,6 +189,14 @@ EXAMPLES:
ipa dns-resolve www.example.com
ipa dns-resolve www
+
+GLOBAL DNS CONFIGURATION
+
+DNS configuration passed to command line install script is stored in a local
+configuration file on each IPA server where DNS service is configured. These
+local settings can be overridden with a common configuration stored in LDAP
+server:
+
Show global DNS configuration:
ipa dnsconfig-show
@@ -2701,16 +2709,30 @@ class dnsconfig(LDAPObject):
return entry
+ def postprocess_result(self, result):
+ if not any(param in result['result'] for param in self.params):
+ result['summary'] = unicode(_('Global DNS configuration is empty'))
+
api.register(dnsconfig)
class dnsconfig_mod(LDAPUpdate):
__doc__ = _('Modify global DNS configuration.')
+ def execute(self, *keys, **options):
+ result = super(dnsconfig_mod, self).execute(*keys, **options)
+ self.obj.postprocess_result(result)
+ return result
+
api.register(dnsconfig_mod)
class dnsconfig_show(LDAPRetrieve):
__doc__ = _('Show the current global DNS configuration.')
+ def execute(self, *keys, **options):
+ result = super(dnsconfig_show, self).execute(*keys, **options)
+ self.obj.postprocess_result(result)
+ return result
+
api.register(dnsconfig_show)
diff --git a/ipaserver/install/bindinstance.py b/ipaserver/install/bindinstance.py
index a37a29303..ba8b7b5cc 100644
--- a/ipaserver/install/bindinstance.py
+++ b/ipaserver/install/bindinstance.py
@@ -637,6 +637,26 @@ class BindInstance(service.Service):
# remove also master NS record from the reverse zone
del_rr(rzone, "@", "NS", fqdn+".")
+ def check_global_configuration(self):
+ """
+ Check global DNS configuration in LDAP server and inform user when it
+ set and thus overrides his configured options in named.conf.
+ """
+ result = api.Command.dnsconfig_show()
+ global_conf_set = any(param in result['result'] for \
+ param in api.Object['dnsconfig'].params)
+
+ if not global_conf_set:
+ print "Global DNS configuration in LDAP server is empty"
+ print "You can use 'dnsconfig-mod' command to set global DNS options that"
+ print "would override settings in local named.conf files"
+ return
+
+ print "Global DNS configuration in LDAP server is not empty"
+ print "The following configuration options override local settings in named.conf:"
+ print ""
+ textui = ipalib.cli.textui()
+ api.Command.dnsconfig_show.output_for_cli(textui, result, None, reverse=False)
def uninstall(self):
if self.is_configured():