首页 文章

在启动时为GCE实例配置FQDN

提问于
浏览
3

我正在尝试使用预配置的FQDN启动谷歌计算引擎(GCE)实例 . 我们打算运行基于/ etc / hosts内容许可的应用程序 .

我正在使用Google Cloud SDK实用程序启动实例 - gcloud .

我尝试使用元数据选项设置“hostname”键,如下所示:

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 . 这看起来有效,但感觉不像“google方式” .

在实例创建期间,是否可以使用metaserver功能配置实例的FQDN(特别是域名,因为实例名称始终是主机名)?

6 回答

  • 1

    根据this article 'hostname'是提供有关您的实例的信息的默认元数据条目的一部分,它是 NOT possible to manually edit any of the default metadata pairs . 您还可以查看Google小组中的this video . 在最初的几分钟内,提到您无法修改默认元数据对 . 因此, it does not seem like you can specify the hostname upon instance creation 除了通过使用像你这样指定的启动脚本将被重新启动时由元数据服务器删除和自动同步,除非你使用的是启动脚本或者每次修改它的东西时间 .

    如果您当前所做的工作适用于您要完成的任务,那么它可能是您的方案的唯一解决方法 .

  • 2

    这是 /usr/share/google/set-hostname 的补丁,用于将FQDN设置为GCE实例 .

    https://gist.github.com/yuki-takeichi/3080521322f0f1d159ea6a343e2323e6

    在使用此修补程序之前,必须通过指定 hostname 键在实例的元数据中设置所需的FQDN .

    每次通过 dhclient 续订实例的IP地址时,都会设置主机名 . set-hostname 只是一个钩子脚本, dhclient 执行并提供新的IP地址和内部hostame,并修改 /etc/hosts . 此修补程序通过从元数据服务器查询实例的元数据来更改主机名的来源 .

    原始的 set-hostname 脚本在这里:https://github.com/GoogleCloudPlatform/compute-image-packages/blob/master/google_config/bin/set_hostname .

    使用此补丁需要您自担风险 .

  • 2

    试试这个:

    • 转到GCE >> VM实例面板 .

    • 停止你的gce实例 .

    • clic实例名称 .

    • 编辑您的实例,在 Custom metadata 字段中添加此值:

    关键字段:主机名/值字段:your.server.hostname关键字段:startup-script / Value字段:sudo -s hostnamectl set-hostname your.server.hostname

    setup-example-image.png

    最后,启动您的实例并使用hostnamectl命令进行测试 .

    问候!

  • 3

    创建VM时,可以将自定义FQDN主机名指定为可选参数 . 此功能目前处于测试阶段 .

    $ gcloud beta compute instances create INSTANCE_NAME --hostname example.hostname
    

    这应该适用于操作系统,并且不需要变通方法脚本 . docs中的更多信息 .

    • Sirui(Google Compute Engine产品经理)
  • -2

    我已经浏览了整个网站,找到了已回答的问题,发现了一些有用的东西,但结合了几个解决方案 . 这个帖子似乎是回答的地方 .

    1)echo example.com> / etc / hostname

    2)在/ etc / hosts中添加 - 127.0.1.1 example.com

    3)add - 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上测试了这个

  • 0

    总是在措辞 NOT possible to manually edit any of the default metadata pairs 上,即时级别默认元数据怎么样"/scheduling"?我们可以按照article中的提法手动设置它们

相关问题