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