Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google compute engine 谷歌计算引擎:如何永久设置主机名?_Google Compute Engine - Fatal编程技术网

Google compute engine 谷歌计算引擎:如何永久设置主机名?

Google compute engine 谷歌计算引擎:如何永久设置主机名?,google-compute-engine,Google Compute Engine,如何在GCE中永久设置实例的主机名?我可以通过主机名设置它,但重新启动后它又消失了 我试图输入元数据(主机名:f.q.d.n),但这并没有起作用。但它应该通过元数据()工作 有人有想法吗?那是不可能的。以下说明“主机名”是默认元数据项的一部分,无法手动编辑任何默认元数据对。因此,您需要在每次系统重新启动时使用脚本或其他方法更改主机名,否则每次重新启动时它都会自动与元数据服务器重新同步 您可以在中找到有关GCE启动脚本的信息。您可以获取有关如何将脚本应用于实例的信息。实现它最简单的方法是创建一个简

如何在GCE中永久设置实例的主机名?我可以通过主机名设置它,但重新启动后它又消失了

我试图输入元数据(主机名:f.q.d.n),但这并没有起作用。但它应该通过元数据()工作

有人有想法吗?

那是不可能的。以下说明“主机名”是默认元数据项的一部分,无法手动编辑任何默认元数据对。因此,您需要在每次系统重新启动时使用脚本或其他方法更改主机名,否则每次重新启动时它都会自动与元数据服务器重新同步


您可以在中找到有关GCE启动脚本的信息。您可以获取有关如何将脚本应用于实例的信息。

实现它最简单的方法是创建一个简单的脚本,这就是我所做的

我已将主机名存储在实例元数据中,然后每次系统重新启动时检索它,以便使用cron作业设置主机名

$ gcloud compute instances add-metadata <instance> --metadata hostname=<new_hostname> 
$ sudo crontab -e
完成这些步骤后,每次重新启动实例时,它都会有主机名

您可以在提示符中或使用命令进行检查:
hostname

我不确定我是否理解阿德里安的答案。这看起来太复杂了,因为每次启动都要运行一个脚本,为什么不使用主机名呢

vi/etc/rc.local

加:

主机名\u主机名

就这样。测试和工作。无需修改元数据等。

编辑rc.local

sudo nano /etc/rc.local 
在其余部分下添加您的行:

hostname *your.hostname.com*
确保在脚本执行后运行以下命令

chmod +x /etc/rc.d/rc.local

重新启动,然后获利

您还可以创建一个简单的启动脚本来执行这些作业:

$ gcloud compute instances add-metadata <instance-name> --zone <instance-zone> --metadata startup-script='#! /bin/bash 
hostname <hostname>'

非cron/元数据/脚本解决方案

编辑/etc/dhclient-(networkinterface).conf,如果不存在,则创建一个

例如:

sudo nano /etc/dhclient-eth0.conf
然后添加以下行,在双引号之间替换所需的FQDN:

supersede host-name "hostname.domain-name";

在重新启动和主机名和主机名之间持续存在-f按预期工作。

我很幸运在运行CentOS的GCE上设置了主机名。 资料来源:

  • 在实例上单击“编辑”
  • 转到“自定义元数据”部分
  • 添加
    hostname
    +
    您的.hostname.tld
    (将“your.hostname.tld”更改为您的实际主机名)
  • 运行
    curl--silent“http://metadata.google.internal/computeMetadata/v1/instance/attributes/hostname“-H”元数据风格:谷歌“
  • 运行
    sudo env EDITOR=nano crontab-e
    编辑crontab
  • 添加行
    @reboot hostname$(curl--silent)http://metadata.google.internal/computeMetadata/v1/instance/attributes/hostname“-H”元数据风格:谷歌“
  • 在键盘上按Ctrl+
    X
  • 在键盘上点击
    Y
  • 在键盘上点击
    输入
  • 运行
    重新启动
  • 系统重新启动后,运行
    hostname
    ,查看是否应用了更改

  • 祝你好运!

    需要删除文件/etc/dhcp/dhclient.d/google_hostname.sh

    rm -rf /etc/dhcp/dhclient.d/google_hostname.sh
    rm -rf /etc/dhcp/dhclient-exit-hooks.d/google_set_hostname
    

    在我的CentOS虚拟机中,我发现由
    谷歌计算引擎
    RPM安装的脚本
    /etc/dhcp/dhclient.d/google_hostname.sh
    ,实际上更改了主机名。当实例在引导期间获得其IP地址时,就会发生这种情况

    虽然这不是我真正想要的长期解决方案,但现在我只是删除了这个脚本。我用
    hostnamectl
    设置的主机名在重新启动后仍然存在


    脚本可能与Debian/Ubuntu VMs中的位置完全相同,但我当然不会运行任何脚本。

    如果有人发现此解决方案在GCS实例上不适用于他们。那么我建议您尝试使用Google支持部门描述的退出挂钩

    事实上,有些Linux发行版,如CentOS和Debian使用 dhclient脚本,用于配置的网络参数 此脚本由dhclient不时调用,它是 动态主机配置协议客户端,并为 使用DHCP协议配置一个或多个网络接口, BOOTP协议,或者如果这些协议失败,则通过静态分配 地址

    以下文字引用自的手册页 dhclient脚本:

    完成所有处理后,/usr/sbin/dhclient脚本 检查是否存在可执行文件 /etc/dhcp/dhclient exit hooks脚本,如果存在,则使用´。´命令调用该脚本 dhclient脚本将在exit_状态shell变量中传递给dhclient exit HOOK,并且始终为零 如果脚本在其被调用的任务上成功,则按照前面所述,环境的其余部分 还存在dhclient enter钩子。/etc/dhcp/dhclient exit钩子脚本可以修改 exit_status可更改dhclient脚本的退出状态

    也就是说,通过查看 dhclient脚本,我们可以看到脚本检查是否存在 可执行文件/etc/dhcp/dhclient挂接脚本和中的所有脚本 /etc/dhcp/dhclient-exit-hooks.d/目录

    ETCDIR="/etc/dhcp"
    
    193 exit_with_hooks() {
    194     exit_status="${1}"
    195 
    196     if [ -x ${ETCDIR}/dhclient-exit-hooks ]; then
    197         . ${ETCDIR}/dhclient-exit-hooks
    198     fi
    199 
    200     if [ -d ${ETCDIR}/dhclient-exit-hooks.d ]; then
    201         for f in ${ETCDIR}/dhclient-exit-hooks.d/*.sh ; do
    202             if [ -x ${f} ]; then
    203                 . ${f}204             fi
    205         done
    206     fi
    207     
    208     exit ${exit_status}209 }
    
    因此,为了修改Linux虚拟机的主机名,您可以 创建扩展名为.sh的自定义脚本并将其放置在 /etc/dhcp/dhclient-exit-hooks.d/目录 存在,您可以创建它。自定义脚本的内容将是:

    hostname YourFQDN.sh
    
    >

    确保此新的.sh文件可执行:

     chmod +x YourFQDN.sh
    
    来源:()

    在Debian上测试

    dhclient
    使用DHCP设置主机名

    您可以通过在
    /etc/dhcp/dhclient exit hooks.d/custom\u set\u hostname
    中创建一个自定义钩子脚本来覆盖该脚本,该脚本将从
    /etc/hostname
    读取主机名:

    if [ -f "/etc/hostname" ]; then
        new_host_name=$(cat /etc/hostname)
    fi
    
    脚本必须具有执行perm
     chmod +x YourFQDN.sh
    
    if [ -f "/etc/hostname" ]; then
        new_host_name=$(cat /etc/hostname)
    fi
    
    $ gcloud beta compute instances create INSTANCE_NAME --hostname example.hostname
    
    sudo chattr +i /etc/hosts
    
    Key :startup-script 
    Value: 
    #! /bin/bash 
    hostname <desired hostname>