谷歌云计算引擎/ etc / hosts

时间:2016-03-03 03:43:08

标签: google-compute-engine

在我的Google云计算引擎中,/ etc / hosts文件会在一段时间后自动覆盖。

请告诉我为什么会这样,以及如何预防。

最初的条目如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.128.0.2 instance-1.c.concrete-craft-123421.internal instance-1  # Added by Google

我将其更改为如下所示以启动cloudera服务。

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#10.128.0.2 instance-1.c.concrete-craft-123421.internal instance-1  # Added by Google

10.128.0.2 instance-1 instance-1

但过了一段时间后,原始条目重新出现。知道是什么导致了这个吗?

谢谢,
南大

3 个答案:

答案 0 :(得分:2)

你可以做什么而不是这个

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#10.128.0.2 instance-1.c.concrete-craft-123421.internal instance-1  # Added by Google

10.128.0.2 instance-1 instance-1

太多了你的行

10.128.0.2 instance-1 instance-1
谷歌之前的

。并且不需要cron;)它不会被删除!

这样做 - >

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

10.128.0.2 instance-1 instance-1

#10.128.0.2 instance-1.c.concrete-craft-123421.internal instance-1  # Added by Google

答案 1 :(得分:0)

在Google Compute Engine实例上,Google-daemons在后台运行。这些守护程序服务负责以下服务:

1. Creates new accounts based on the instance metadata.
2. Configures SSH to accept the accounts' public keys from the instance metadata.
3. Adds IP addresses of network load balancers as aliases of the external Ethernet interface
4. Resyncs clock if skewed due to live migration

/ etc / hosts被这些守护进程服务管理和覆盖。因此,如果要永久更改实例的主机名,可以通过在实例上创建cron作业来实现。您可以浏览此video,其中包含创建cron作业的步骤。

答案 2 :(得分:0)

我在 RHEL7 + NetworkManager 上遇到了同样的问题,这就是我防止它再次发生的方法:

tee /etc/dhcp/dhclient.d/1-google_hostname_off.sh << EOF
#!/bin/bash
# Block hosts changes by google-compute-engine
google_hostname_config() {
    :;
}
readonly -f google_hostname_config
EOF
chmod +x /etc/dhcp/dhclient.d/1-google_hostname_off.sh

原因是 google-compute-engine 包在此处放置了一个脚本: /etc/dhcp/dhclient.d/google_hostname.sh 此脚本将在所有重新启动、dhcp 请求/更新时执行并执行此 shell 脚本:/usr/bin/google_set_hostname。 我上面所做的基本上是之前创建了一个空函数,其名称与 Google 制作的脚本中的名称相同,但它是空的且只读的。这样:

  • google-compute-engine 包将是可更新的(您无需删除以后会重新创建的任何内容),
  • 你不需要设置一个不可变的标志(比如在 /etc/hosts 上)
  • 不会抛出任何错误,只会抛出一些简单的消息,例如:
<块引用>

nm-dispatcher[922]:/etc/dhcp/dhclient.d/google_hostname.sh:第 18 行: google_hostname_config:只读函数

我知道,这是一个很晚的答案,但也许它会对某人有所帮助。