mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Hostname used by IPA must be a system hostname
Make sure that the hostname IPA uses is a system hostname. If user passes a non-system hostname, update the network settings and system hostname in the same way that ipa-client-install does. This step should prevent various services failures which may not be ready to talk to IPA with non-system hostname. https://fedorahosted.org/freeipa/ticket/1931
This commit is contained in:
committed by
Rob Crittenden
parent
9bff6cb8a9
commit
77cc5e0246
@@ -524,6 +524,14 @@ def uninstall():
|
|||||||
|
|
||||||
ipaservices.knownservices.ipa.disable()
|
ipaservices.knownservices.ipa.disable()
|
||||||
|
|
||||||
|
old_hostname = sstore.restore_state('network','hostname')
|
||||||
|
system_hostname = get_fqdn()
|
||||||
|
if old_hostname is not None and old_hostname != system_hostname:
|
||||||
|
try:
|
||||||
|
ipautil.run(['/bin/hostname', old_hostname])
|
||||||
|
except CalledProcessError, e:
|
||||||
|
print >>sys.stderr, "Failed to set this machine hostname back to %s (%s)." % (old_hostname, str(e))
|
||||||
|
|
||||||
# Now for some sanity checking. Make sure everything was really
|
# Now for some sanity checking. Make sure everything was really
|
||||||
# uninstalled.
|
# uninstalled.
|
||||||
serverids = dsinstance.check_existing_installation()
|
serverids = dsinstance.check_existing_installation()
|
||||||
@@ -751,6 +759,15 @@ def main():
|
|||||||
host_name = host_name.lower()
|
host_name = host_name.lower()
|
||||||
logging.debug("will use host_name: %s\n" % host_name)
|
logging.debug("will use host_name: %s\n" % host_name)
|
||||||
|
|
||||||
|
system_hostname = get_fqdn()
|
||||||
|
if host_name != system_hostname:
|
||||||
|
print >>sys.stderr
|
||||||
|
print >>sys.stderr, "Warning: hostname %s does not match system hostname %s." \
|
||||||
|
% (host_name, system_hostname)
|
||||||
|
print >>sys.stderr, "System hostname will be updated during the installation process"
|
||||||
|
print >>sys.stderr, "to prevent service failures."
|
||||||
|
print >>sys.stderr
|
||||||
|
|
||||||
if not options.domain_name:
|
if not options.domain_name:
|
||||||
domain_name = read_domain_name(host_name[host_name.find(".")+1:], options.unattended)
|
domain_name = read_domain_name(host_name[host_name.find(".")+1:], options.unattended)
|
||||||
logging.debug("read domain_name: %s\n" % domain_name)
|
logging.debug("read domain_name: %s\n" % domain_name)
|
||||||
@@ -871,6 +888,12 @@ def main():
|
|||||||
print "Please wait until the prompt is returned."
|
print "Please wait until the prompt is returned."
|
||||||
print ""
|
print ""
|
||||||
|
|
||||||
|
if host_name != system_hostname:
|
||||||
|
logging.debug("Chosen hostname (%s) differs from system hostname (%s) - change it" \
|
||||||
|
% (host_name, system_hostname))
|
||||||
|
# configure /etc/sysconfig/network to contain the custom hostname
|
||||||
|
ipaservices.backup_and_replace_hostname(fstore, sstore, host_name)
|
||||||
|
|
||||||
# Create DS group if it doesn't exist yet
|
# Create DS group if it doesn't exist yet
|
||||||
try:
|
try:
|
||||||
grp.getgrnam(dsinstance.DS_GROUP)
|
grp.getgrnam(dsinstance.DS_GROUP)
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ The kerberos master password (normally autogenerated)
|
|||||||
The password for the IPA admin user
|
The password for the IPA admin user
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-hostname\fR=\fIHOST_NAME\fR
|
\fB\-\-hostname\fR=\fIHOST_NAME\fR
|
||||||
The fully\-qualified DNS name of this server
|
The fully\-qualified DNS name of this server. If the hostname does not match system hostname, the system hostname will be updated accordingly to prevent service failures.
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-ip\-address\fR=\fIIP_ADDRESS\fR
|
\fB\-\-ip\-address\fR=\fIIP_ADDRESS\fR
|
||||||
The IP address of this server. If this address does not match the address the host resolves to and --setup-dns is not selected the installation will fail.
|
The IP address of this server. If this address does not match the address the host resolves to and --setup-dns is not selected the installation will fail.
|
||||||
|
|||||||
@@ -955,8 +955,10 @@ def install(options, env, fstore, statestore):
|
|||||||
if not options.unattended and not user_input("Continue to configure the system with these values?", False):
|
if not options.unattended and not user_input("Continue to configure the system with these values?", False):
|
||||||
return CLIENT_INSTALL_ERROR
|
return CLIENT_INSTALL_ERROR
|
||||||
|
|
||||||
if options.hostname:
|
if options.hostname and not options.on_master:
|
||||||
# configure /etc/sysconfig/network to contain the hostname we set.
|
# configure /etc/sysconfig/network to contain the hostname we set.
|
||||||
|
# skip this step when run by ipa-server-install as it always configures
|
||||||
|
# hostname if different from system hostname
|
||||||
ipaservices.backup_and_replace_hostname(fstore, statestore, options.hostname)
|
ipaservices.backup_and_replace_hostname(fstore, statestore, options.hostname)
|
||||||
|
|
||||||
if not options.unattended:
|
if not options.unattended:
|
||||||
|
|||||||
@@ -160,11 +160,6 @@ def verify_fqdn(host_name, no_host_dns=False, local_hostname=True):
|
|||||||
except socket.gaierror:
|
except socket.gaierror:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
system_host_name = socket.gethostname()
|
|
||||||
if not (host_name + '.').startswith(system_host_name + '.'):
|
|
||||||
print "Warning: The host name '%s' does not match the system host name '%s'." % (host_name, system_host_name)
|
|
||||||
print " Some services may not work properly."
|
|
||||||
|
|
||||||
if no_host_dns:
|
if no_host_dns:
|
||||||
print "Warning: skipping DNS resolution of host", host_name
|
print "Warning: skipping DNS resolution of host", host_name
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user