我正在尝试使用预配置的FQDN启动Google计算引擎(GCE)实例。我们打算运行基于/ etc / hosts内容许可的应用程序。
我正在使用Google Cloud SDK实用程序启动实例 - gcloud。
我试过设置"主机名"使用元数据选项的密钥如下:
gcloud compute instances create mynode (standard opts) --metadata hostname=mynode.example.com
每当我登录开发者控制台,在计算机,实例下,我都可以在"自定义元数据"下看到主机名。这似乎是一个新的客户关键 - 它对什么没有影响:
http://metadata.google.internal/computeMetadata/v1/instance/hostname
回报。
我也尝试过设置" instance / hostname"如下所示,这在使用gcloud时会导致解析错误。
--metadata instance/hostname=mynode.example.com
我已成功使用元数据服务器的启动脚本功能来运行启动脚本,该脚本解析新创建的实例的新内部IP地址,更新/ etc / hosts。这似乎有效,但不像谷歌的方式那样#34;
在实例创建期间,我可以使用 FQDN (具体来说,是实体名称始终是主机名的域名)吗? > metaserver 功能?
答案 0 :(得分:3)
根据this article'hostname'是提供有关您实例的信息的默认元数据条目的一部分,无法手动编辑任何默认元数据对。您还可以查看Google小组中的this video。在最初的几分钟内,提到您无法修改默认元数据对。因此,除了通过使用像您已经完成的启动脚本之外,似乎不能在实例创建时指定主机名。还值得一提的是,您指定的主机名将在重新启动时被元数据服务器删除并自动同步,除非您使用的是启动脚本或每次都会修改它的内容。
如果您目前所做的工作适用于您要完成的工作,则可能是您的方案唯一的解决方法。
答案 1 :(得分:2)
以下是/usr/share/google/set-hostname
的补丁,用于将FQDN设置为GCE实例。
https://gist.github.com/yuki-takeichi/3080521322f0f1d159ea6a343e2323e6
在使用此修补程序之前,必须通过指定hostname
密钥在实例的元数据中设置所需的FQDN。
每次更新dhclient
实例的IP地址时,都会设置主机名。 set-hostname
只是一个钩子脚本,dhclient
执行并提供新的IP地址和内部主题,并修改/etc/hosts
。此修补程序通过从元数据服务器查询实例的元数据来更改主机名的来源。
原始的set-hostname
脚本在这里:
https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google_config/bin/set_hostname
使用此补丁需要您自担风险。
答案 2 :(得分:2)
尝试一下:
编辑您的实例,并将其添加到自定义元数据字段中:
关键字段:主机名/ 值字段:您的服务器主机名
关键字段:启动脚本/ 值字段:sudo -s hostnamectl set-hostname your.server.hostname
最后,启动您的实例并使用hostnamectl命令进行测试。
致谢!
答案 3 :(得分:1)
创建VM时,可以将自定义FQDN主机名指定为可选参数。此功能当前处于Beta中。
$ gcloud beta compute instances create INSTANCE_NAME --hostname example.hostname
这应该可以在所有操作系统上使用,并且不需要变通办法脚本。 在docs中有更多信息。
-Sirui(Google Compute Engine产品经理)
答案 4 :(得分:0)
我在整个站点中一直寻找问题的答案,并发现了一些可行的方法,但结合了两种解决方案。这个主题似乎是答案的地方。
1)echo example.com> / etc / hostname
2)在/ etc / hosts中添加-127.0.1.1 example.com
3)添加-hostnamectl set-hostname example.com-命令/etc/rc.local脚本
4)取消注释/etc/dhcp/dhclient.conf行:
取代域名“ example.com”;
5)利润。...似乎在每次重新启动后仍然存在
(请注意example.com是您的域名:fqdndomain.com-yourfqdndomain.org) 另请注意,这是针对Ubuntu或Debian的。其他Unix可能略有不同。我已经在Ubuntu 16.04上对此进行了测试
答案 5 :(得分:-2)
始终使用无法手动编辑任何默认元数据对的措辞,即时级默认元数据“/ scheduling”如何?我们可以按照article
中的说明手动设置它们