我要如何为运行 SLES 的私有 EC2 实例分配静态主机名?

上次更新时间:2020 年 2 月 20 日

我更改了我的私有 Amazon Elastic Compute Cloud (Amazon EC2) 实例的主机名。但在重新启动时,或当我停止并重新启动实例时,新的主机名会恢复到之前分配的主机名。如何解决此问题?

简短描述

EC2 实例主机名是随着实例启动时自动分配给实例的 IP 地址生成的。在您通过使用 hostname 命令更改 EC2 Linux 私有实例的主机名时,如果您重新启动,或停止并重新启动实例,该主机名会发生改变。如果需要在实例停止和启动或重启之间保留新主机名,将新主机名添加到 EC2 Linux 实例上适当的配置文件中。

解决方法

1.    使用 SSH 连接到 EC2 Linux 实例。有关更多信息,请参阅使用 SSH 连接到 Linux 实例

2.    切换到根用户。

sudo su

3.    使用 YaST 接口或以新主机名手动更新您的 SLES Linux 实例。

YaST 接口更新

1.    运行 yast 命令以启动 YaST 接口。

yast

2.    导航到网络设置

SLES 11:

使用 Tab 和箭头键导航到网络设备,然后导航至网络设置,接着按下 Enter 键。

SLES 12 和 SLES 15:

使用 Tab 和箭头键导航到系统,然后导航至网络设置,接着按下 Enter 键。

3.    在网络设置中,使用箭头键导航到主机名/DNS,然后使用 TabShift + Tab 组合键循环选择可用选项。

4.    设置主机名和域名。

SLES 11 和 SLES 12:

选择主机名和域名并设置为首选值。

SLES 15:

选择主机名并设置为首选值。

5.    将通过 DHCP 更改主机名的值设置为 no 或清除该值。

SLES 11:

导航到通过 DHCP 更改主机名,然后按下空格键以清除此选项。

SLES 12 和 SLES 15:

验证通过 DHCP 设置主机名选项被设置为 no

6.    使用 Tab 键导航至 [OK],然后按下 Enter 键以接受更改。

7.    使用 Tab 键导航至 [Quit],然后按下 Enter 以退出 YaST。

8.    使用 vim 编辑器更新您的 SLES Linux 实例上的 /etc/cloud/cloud.cfg 文件。

vim /etc/cloud/cloud.cfg

9.    查找 preserve_hostname 字符串并更改默认设置为 true,以便在重新启动或重启之间保留主机名。

preserve_hostname: true

10.    通过按下 Shift + :(半角冒号)保存并退出 vim 编辑器,以便在 vim 编辑器中打开新的命令输入框。键入 wq,然后按下 Enter 键以保存更改并退出 vim。

11.    重启实例。

sudo reboot

12.    连接至您的 EC2 实例,然后不使用任何参数运行 Linux hostname 命令,以验证保留主机名更改。 

hostname

该命令应返回新主机名。

手动更新

1.    使用 hostnamectl 命令设置新的主机名。将 new-hostname 替换为您的主机名。

SLES 11:

hostname new-hostname

SLES 12 和 SLES 15:

hostnamectl set-hostname new-hostname

2.    使用 vim 编辑器并以新的主机名更新 /etc/hosts 文件。 

vim /etc/hosts

3.    查找 localhost 字符串并附加新的主机名,再次将 new-hostname 替换为您的主机名。

127.0.0.1 localhost new-hostname

4.    通过按下 Shift + :(半角冒号)保存并退出 vim 编辑器,以便在 vim 编辑器中打开新的命令输入框,键入 wq,然后按下 Enter 键以保存更改并退出 vim。

SLES 11(仅适用于此 OS 版本的更多步骤)

使用 vim 编辑器并以新的主机名更新 /etc/HOSTNAME 文件。

vim /etc/HOSTNAME

查找当前的主机名字符串,并将其替换为新的主机名。

按下 Shift + :(半角冒号)以便在 vim 编辑器中打开新的命令输入框,键入 wq,然后按下 Enter 键以保存更改并退出 vim。

5.    使用 vim 编辑器更新您的 SLES Linux 实例上的 /etc/cloud/cloud.cfg 文件。 

vim /etc/cloud/cloud.cfg

6.    查找 preserve_hostname 字符串并更改默认设置为 true,以便在重新启动或重启之间保留主机名。

preserve_hostname: true

7.    通过按下 Shift + :(半角冒号)保存并退出 vim 编辑器,以便在 vim 编辑器中打开新的命令输入框。键入 wq,然后按下 Enter 键以保存更改并退出 vim。

8.    重启实例。

sudo reboot

9.    连接至您的 EC2 实例,然后不使用任何参数运行 Linux hostname 命令,以验证保留主机名更改。 

hostname

该命令会返回新的主机名。