vaguerent/plugins/guests/alt/cap/change_host_name.rb
2020-08-05 15:12:45 -05:00

53 lines
1.7 KiB
Ruby

require_relative '../../linux/cap/change_host_name'
module VagrantPlugins
module GuestALT
module Cap
class ChangeHostName
extend VagrantPlugins::GuestLinux::Cap::ChangeHostName
def self.change_name_command(name)
basename = name.split(".", 2)[0]
return <<-EOH.gsub(/^ {14}/, '')
# Save current hostname saved in /etc/hosts
CURRENT_HOSTNAME_FULL="$(hostname -f)"
CURRENT_HOSTNAME_SHORT="$(hostname -s)"
# Set the hostname - use hostnamectl if available
if command -v hostnamectl; then
hostnamectl set-hostname --static '#{name}'
hostnamectl set-hostname --transient '#{name}'
else
hostname '#{name}'
fi
# Persist hostname change across reboots
if [ -f /etc/sysconfig/network ]; then
sed -i 's/\\(HOSTNAME=\\).*/\\1#{name}/' /etc/sysconfig/network
elif [ -f /etc/hostname ]; then
sed -i 's/.*/#{name}/' /etc/hostname
else
echo 'Unrecognized system. Hostname change may not persist across reboots.'
exit 0
fi
# Restart the network if we find a recognized SYS V init script
if command -v service; then
if [ -f /etc/init.d/network ]; then
service network restart
elif [ -f /etc/init.d/networking ]; then
service networking restart
elif [ -f /etc/init.d/NetworkManager ]; then
service NetworkManager restart
else
echo 'Unrecognized system. Networking was not restarted following hostname change.'
exit 0
fi
fi
EOH
end
end
end
end
end