plugins/guests/gentoo/cap/change_host_name.rb in vagrant-unbundled-1.8.4.2 vs plugins/guests/gentoo/cap/change_host_name.rb in vagrant-unbundled-1.8.5.1
- old
+ new
@@ -1,15 +1,30 @@
module VagrantPlugins
module GuestGentoo
module Cap
class ChangeHostName
def self.change_host_name(machine, name)
- machine.communicate.tap do |comm|
- if !comm.test("sudo hostname --fqdn | grep '#{name}'")
- comm.sudo("echo 'hostname=#{name.split('.')[0]}' > /etc/conf.d/hostname")
- comm.sudo("sed -i 's@^\\(127[.]0[.]0[.]1[[:space:]]\\+\\)@\\1#{name} #{name.split('.')[0]} @' /etc/hosts")
- comm.sudo("hostname #{name.split('.')[0]}")
- end
+ comm = machine.communicate
+
+ if !comm.test("hostname -f | grep '^#{name}$'", sudo: false)
+ basename = name.split(".", 2)[0]
+ comm.sudo <<-EOH.gsub(/^ {14}/, "")
+ set -e
+
+ # Set the hostname
+ hostname '#{basename}'
+ echo "hostname=#{basename}" > /etc/conf.d/hostname
+
+ # Remove comments and blank lines from /etc/hosts
+ sed -i'' -e 's/#.*$//' /etc/hosts
+ sed -i'' -e '/^$/d' /etc/hosts
+
+ # Prepend ourselves to /etc/hosts
+ grep -w '#{name}' /etc/hosts || {
+ echo -e '127.0.0.1\\t#{name}\\t#{basename}' | cat - /etc/hosts > /tmp/tmp-hosts
+ mv /tmp/tmp-hosts /etc/hosts
+ }
+ EOH
end
end
end
end
end