Linux

如何覆蓋 DHCP 在 AWS 的 CentOS7 機器上配置的主機名?

  • November 26, 2014

標題幾乎說明了一切。我在 EC2 中有一個執行 CentOS 7 的 VM。它使用 DHCP,這似乎是 EC2 的要求。無論我嘗試什麼,DHCP 都會在重新啟動時覆蓋主機名。我不會一一列舉,但我已經嘗試了幾乎所有的建議:在 RHEL5/CentOS/Amazon Linux 上覆蓋 DHCP 主機名,以及在Google搜尋出現的其他幾個網站上找到的主機名。我不知道這是特定的作業系統版本還是 AWS/EC2 環境,但我無法更改主機名並使其在重新啟動後保持不變。甚至通過 /etc/rc.d/rc.local 強制它(添加“/bin/hostnamectl set-hotname foo.bar.baz”也不起作用。我不敢相信其他 AWS/EC2 使用者沒有想到這一點出來。請幫忙。

更新:這也不起作用:http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-hostname.html 即,為 AWS 的 Route53 中的框添加 DNS A 記錄(並驗證它是否有效) ,並且在 /etc/sysconfig/network 中設置 HOSTNAME=foo.bar.baz (重啟後檢查)也是徒勞的。

更新 2:針對Fedora 20回答了類似的問題。那裡接受的解決方案還涉及重新配置 cloud-init,儘管方式不同。此外,尚不清楚該問題/解決方案是否適用於其他發行版。因此,我覺得我的問題可能應該留給其他執行 CentOS 並以這種方式搜尋它的人(是的,我知道 Fedora 和 CentOS 是兄弟姐妹,但並不是每個人在搜尋解決方案時都會搜尋所有同義詞)。

好的。在得出答案之前,我可能總共花了五個小時來解決這個問題。@Sirex 建議解除安裝 cloud-init 是線索。從本質上講,cloud-init 是一種內置於大多數 EC2 映像 (AMI) 中的服務,包括 AMI Linux 和 CentOS。該系統做了很多事情(Google它),並且可能對某些配置和維護 foo 有用。因此,我不願簡單地禁用它。但是,它似乎也在設置 EC2 主機名。因此,要使用您首選的主機名覆蓋它,只需執行以下操作:

**(1)**創建一個類似 99_…cfg 的文件(我命名為 99_hostname.cfg),並在其中寫入以下內容:

#cloud-config
hostname: foo
fqdn: foo.bar.baz

當然,用您的主機名和完全限定域名替換“foo”和“foo.bar.baz”。

**(2)**將此文件放在/etc/cloud/cloud.cfg.d/99_hostname.cfg

**(3)**確保通過以下命令正確設置文件權限/所有者/selinux 上下文(如果您有 SELinux 強制執行):

sudo su -
cd /etc/cloud/cloud.cfg.d/
chown root: 99_hostname.cfg
chmod 644 99_hostname.cfg
chcon system_u:object_r:etc_t:s0 99_hostname.cfg

**(4)**重新啟動你的虛擬機,並且應該設置新的主機名。如果您不信任您的 bash 提示符,您可以檢查這一點,例如,執行以下任一操作:

hostnamectl

或者

cat /etc/hostname

引用自:https://serverfault.com/questions/645099