cloud-init几点笔记及centos莫名改hostname问题。

一个奇怪的问题

前几天在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文档阅读笔记

对cloud-init一直都比较模糊,只知道和openstack之类的云服务平台有关。以前下载来的虚拟机云映像文件,不知道登入密码,搜索的时候总有高手神秘的说一句 #cloud-cofig 啥啥啥的,然而具体怎么搞,一头雾水。偶只想搭个服务器,不想搞云平台,偶的笨办法就是挂载映像文件,然后操作映像里的文件-_-!!!

好吧,解决这次问题,还是阅读了一下cloud-init的文档,同时记点笔记。

  1. cloud-init是个服务,装在guest os里,guest os在启动的时候,对虚拟机进行必要的初始化,例如修改密码,修改配置等等。
  2. cloud-init初始化虚拟机一个必要的事项就是如何拿到初始化的配置数据。提供配置数据的服务方叫datasource。根据不同的云服务平台,openstack, amz, azure等,cloud-init实现了不同的数据源。例如config driver数据源,就是生成一个磁盘映像,虚拟机启动时cloud-init寻找特定的文件系统,找到后获取配置数据,进行初始化。
  3. 数据源里的配置数据分为meta-data和user-data。meta-data主要是云服务平台要用的配置,例如 server name, instance id;user-data则是由用户定义的虚拟机相关的配置,脚本等。
  4. 对于非云平台的情况,cloud-init提供一种datasource,叫NoCloud。借助NoCloud,cloud-init可也初始化虚拟机。NoCloud有点像config driver,然而更简单。配置文件放在一个vfat或iso9660文件系统上,文件系统的lable必须是cidata。
  5. cloud-init服务,在systemd里有一个generator,会自动的判断是否启动cloud-init服务。所以普通的systemctl disable是不能停止cloud-init服务。0.7.7以上版本提供一个简单办法,放一个文件 /etc/cloud/cloud-init.disabled,就可阻止cloud-init。

centos虚拟机云映像怎么改登入密码的方法来了:D

  1. 创建2个文件,user-data和meta-data。
/user-data
/meta-data
  1. user-data文件内容:
 #cloud-config
 password: passw0rd
 chpasswd: { expire: False }
 ssh_pwauth: True
  1. meta-data文件内容。虚拟机实例id为iid-local01,hostname设为cloudimg. 虚拟机根据instance-id判断该实例是否是第一次启动。大部分的配置数据只在第一次启动时初始化。
instance-id: iid-local01
local-hostname: cloudimg
  1. 制作一个iso光盘映像,在windows下,我使用mkisofs.exe,ultraiso之类的也应该可以。seed.iso为创建的iso光盘映像文件名。
mkisofs.exe -r -R -J -l -L -V cidata -o seed.iso meta-data user-data
  1. 把seed.iso挂载到虚拟机光盘里。启动虚拟机,cloud-init就会自动修改密码了。

转载于:https://my.oschina.net/u/947271/blog/1456962

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值