Update redhat change host name capability to support systemd
Update capability to use guest inspection module for determining correct actions to execute. When systemd is in use restart the correct active service, either NetworkManager or networkd. Default to using the original service restart when systemd service is not found.
This commit is contained in:
parent
fb5fc0e657
commit
ff021fcab4
|
@ -2,6 +2,9 @@ module VagrantPlugins
|
|||
module GuestRedHat
|
||||
module Cap
|
||||
class ChangeHostName
|
||||
|
||||
extend Vagrant::Util::GuestInspection
|
||||
|
||||
def self.change_host_name(machine, name)
|
||||
comm = machine.communicate
|
||||
|
||||
|
@ -10,34 +13,32 @@ module VagrantPlugins
|
|||
comm.sudo <<-EOH.gsub(/^ {14}/, '')
|
||||
# Update sysconfig
|
||||
sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network
|
||||
|
||||
# Update DNS
|
||||
sed -i 's/\\(DHCP_HOSTNAME=\\).*/\\1\"#{basename}\"/' /etc/sysconfig/network-scripts/ifcfg-*
|
||||
|
||||
# Set the hostname - use hostnamectl if available
|
||||
echo '#{name}' > /etc/hostname
|
||||
if command -v hostnamectl; then
|
||||
hostnamectl set-hostname --static '#{name}'
|
||||
hostnamectl set-hostname --transient '#{name}'
|
||||
else
|
||||
hostname -F /etc/hostname
|
||||
fi
|
||||
|
||||
# Prepend ourselves to /etc/hosts
|
||||
grep -w '#{name}' /etc/hosts || {
|
||||
sed -i'' '1i 127.0.0.1\\t#{name}\\t#{basename}' /etc/hosts
|
||||
}
|
||||
|
||||
# Restart network
|
||||
if (test -f /usr/bin/systemctl && systemctl -q is-active NetworkManager.service); then
|
||||
systemctl restart NetworkManager.service
|
||||
elif test -f /etc/init.d/network; then
|
||||
service network restart
|
||||
else
|
||||
printf "Could not restart the network to set the new hostname!\n"
|
||||
exit 1
|
||||
fi
|
||||
EOH
|
||||
|
||||
if hostnamectl?(comm)
|
||||
comm.sudo("hostnamectl set-hostname --static '#{name}' ; " \
|
||||
"hostnamectl set-hostname --transient '#{name}'")
|
||||
else
|
||||
comm.sudo("hostname -F /etc/hostname")
|
||||
end
|
||||
|
||||
restart_command = "service network restart"
|
||||
|
||||
if systemd?
|
||||
if systemd_networkd?(comm)
|
||||
restart_command = "systemctl restart systemd-networkd.service"
|
||||
elsif systemd_controlled?(comm, "NetworkManager.service")
|
||||
restart_command = "systemctl restart NetworkManager.service"
|
||||
end
|
||||
end
|
||||
comm.sudo(restart_command)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue