技术解析
忽然惊喜的发现,自己原来写在 oschina 上的文章,找到入口了。自从它要求绑定手机后,因不想提供手机号,我再也没找到原来的文章。既然失而复得,转几个还有点价值的文章到这里,以免再次丢失。
原文写于 2017/07/18 16:29
前几天在 hyper-v 上搭一个 centos 虚拟机。不想一步步地安装,就用 centos 官方的 generic cloud-init enabled image 搭建了。把网络配置为 static ip 地址,然后发生一个奇怪的现象,不论怎么改 hostname,过一段时间都会自动在 hostname 后附加一个 .localdomain
改 /etc/hostname , 改 /etc/network , 改 /etc/hosts , 改 /etc/resolv.cfg ,hostnamectl 都无效。查看日志终于发现是 cloud-init 服务在修改 hostname 。只要阻止 cloud-init 服务改 hostname 就好了,可在 /etc/cloud/cloud.cfg.d 的目录下增加一个配置文件。执行:
sudo echo "preserve_hostname: 1" > /etc/cloud/cloud.cfg.d/00_preserve_hostname.cfg
或者另一个办法,把 /etc/cloud/cloud.cfg 配置文件中把一下 2 行删掉:
- set_hostname
- update_hostname
注:cloud-init 的 0.7.9 版的 changelog 中提到一条:
set_hostname: avoid erroneously appending domain to fqdn 。 可能作为 bug 修复掉了吧[centos 7 目前(2017/7/18)使用的是 0.7.5 版]
对 cloud-init 一直都比较模糊,只知道和 openstack 之类的云服务平台有关。以前下载来的虚拟机云映像文件,不知道登入密码,搜索的时候总有高手神秘的说一句 #cloud-cofig 啥啥啥的,然而具体怎么搞,一头雾水。偶只想搭个服务器,不想搞云平台,偶的笨办法就是挂载映像文件,然后操作映像里的文件-_-!!!
好吧,解决这次问题,还是阅读了一下 cloud-init 的文档,同时记点笔记。
/user-data
/meta-data
#cloud-config
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
instance-id: iid-local01
local-hostname: cloudimg
mkisofs.exe -r -R -J -l -L -V cidata -o seed.iso meta-data user-data