一个奇怪的问题
前几天在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的文档,同时记点笔记。
- cloud-init是个服务,装在guest os里,guest os在启动的时候,对虚拟机进行必要的初始化,例如修改密码,修改配置等等。
- cloud-init初始化虚拟机一个必要的事项就是如何拿到初始化的配置数据。提供配置数据的服务方叫datasource。根据不同的云服务平台,openstack, amz, azure等,cloud-init实现了不同的数据源。例如config driver数据源,就是生成一个磁盘映像,虚拟机启动时cloud-init寻找特定的文件系统,找到后获取配置数据,进行初始化。
- 数据源里的配置数据分为meta-data和user-data。meta-data主要是云服务平台要用的配置,例如 server name, instance id;user-data则是由用户定义的虚拟机相关的配置,脚本等。
- 对于非云平台的情况,cloud-init提供一种datasource,叫NoCloud。借助NoCloud,cloud-init可也初始化虚拟机。NoCloud有点像config driver,然而更简单。配置文件放在一个vfat或iso9660文件系统上,文件系统的lable必须是cidata。
- cloud-init服务,在systemd里有一个generator,会自动的判断是否启动cloud-init服务。所以普通的systemctl disable是不能停止cloud-init服务。0.7.7以上版本提供一个简单办法,放一个文件 /etc/cloud/cloud-init.disabled,就可阻止cloud-init。
centos虚拟机云映像怎么改登入密码的方法来了:D
- 创建2个文件,user-data和meta-data。
/user-data
/meta-data
- user-data文件内容:
#cloud-config
password: passw0rd
chpasswd: { expire: False }
ssh_pwauth: True
- meta-data文件内容。虚拟机实例id为iid-local01,hostname设为cloudimg. 虚拟机根据instance-id判断该实例是否是第一次启动。大部分的配置数据只在第一次启动时初始化。
instance-id: iid-local01
local-hostname: cloudimg
- 制作一个iso光盘映像,在windows下,我使用mkisofs.exe,ultraiso之类的也应该可以。seed.iso为创建的iso光盘映像文件名。
mkisofs.exe -r -R -J -l -L -V cidata -o seed.iso meta-data user-data
- 把seed.iso挂载到虚拟机光盘里。启动虚拟机,cloud-init就会自动修改密码了。
转载于:https://my.oschina.net/u/947271/blog/1456962
分享到:
相关推荐
cloud-init离线安装包,包含所有rpm包,完全可以离线安装。因私有云环境不一定可以访问外网,特提供本安装包。 cloud-init是专为云环境中虚拟机的初始化而开发的工具,它从各种数据源读取相关数据并据此对虚拟机进行...
当虚拟机启动时,cloud-init会自动运行,从数据服务器获取这些信息,并根据配置模块执行相应的操作,例如设置hostname、更新软件包、调整文件系统大小等。 在制作云平台镜像时,特别是针对麒麟云平台,以下是一些...
1. **跨平台兼容性**:cloud-init支持多种操作系统,如Ubuntu、CentOS、Red Hat Enterprise Linux、Amazon Linux等,这使得它成为云环境中的一致化初始化解决方案。 2. **多服务集成**:cloud-init可以与多种云服务...
离线安装包,测试可用
cloud-init-0.7.9-9.el7.centos.2.x86_64.rpm
离线安装包,亲测可用
1. **安装Cloud-init**:在CentOS 7.6环境下,你需要通过`yum`命令安装Cloud-init软件包。运行以下命令: ``` [root@localhost ~]# yum -y install cloud-init ``` 2. **检查安装**:安装完成后,你可以通过`rpm...
1. **local阶段**: 这是cloud-init的第一步,它从config drive中获取网络配置信息,并将其写入系统网络配置文件(如Ubuntu的`/etc/network/interfaces`,CentOS的`/etc/sysconfig/network-scripts/ifcfg-xxx`)。...
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
veewee-centos6-cloudinit 一个 veewee 使用最近的 cloud-init 和 growpart 构建 centos6 云镜像的定义文件。 将在第一次启动时调整根分区的大小并启动 cloud-init。 最初为 OpenStack 构建。 特征: cloud-init...
离线安装包,亲测可用
cloud-init则是一个用于初始化Linux系统的服务,可以在初次启动时执行自定义配置,如用户账户创建、网络设置、软件包安装等。 描述中提到的是这个脚本的具体应用场景,即利用KVM、libvirt和cloud-init这些技术来...
许多预制的云映像(例如Fedora Cloud,Ubuntu Cloud)使用某种形式的cloud-init来设置实例/用户元数据,例如主机名和SSH密钥。 当在可以播种该数据的云基础架构(例如EC2或OpenStack)中使用时,此方法效果很好,但...
# CentOS-7-x86_64-DVD-1810.iso CentOS 7.6 DVD 版 4G http://mirrors.163.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso # CentOS-7-x86_64-Everything-1810.iso CentOS 7.6 Everything版 10G ...
centos 6.x,各位根据版本下载。 适用于yum无法使用情况,具体文件如下: ntpdate-4.2.6p5-5.el6.centos.x86_64.rpm ntp-4.2.6p5-5.el6.centos.x86_64.rpm
CentOS-7.2-x86_64-DVD-1511 CentOS-7.3-x86_64-DVD-1611 CentOS-7.4-x86_64-DVD-1708 CentOS-7.5-x86_64-DVD-1804 CentOS-7.6-aarch64-Everything-1810 CentOS-7.6-x86_64-DVD-1810 CentOS-7.7-x86_64-DVD-1908 ...
当用户尝试安装一个软件包时,如果这个软件包依赖于其他尚未安装的包,`yum`会自动寻找并安装这些依赖包,从而避免了手动解决依赖问题的麻烦。 `yum-3.2.29-40.el6.centos.noarch.rpm`和`yum-3.2.29-30.el6.noarch....