cloud-init 常见问题
1 日志文件都放在了哪里
1 /var/log/cloud-init.log
2 服务的输出
systemd 启动的系统可以查看 journalctl 日志
sysvinit/upstart 启动的系统应该在 /var/log/cloud-init-output.log 里,这块我需要确认下
如何收集日志
cloud-init collect-logs
执行此命令,会将 cloud-init.log cloud-init-output.log dmesg journal.txt 等日志打包成一个 tar.gz包
2配置文件在哪里
/etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.d/*.cfg
3 数据文件在哪里存放
在目录 /var/lib/cloud/ 下有两个非常重要的子目录
【1】instance
/var/lib/cloud/instance 这个目录作为链接 链到了最近使用的实例id的目录 ,这个路径包含了cloud-init 从数据源里获取的信息,
包括 vender 和 user-data,这些信息能更好的帮助我们检查 所传入的数据信息是正确的
该目录下 包含了一个 datasource 文件,这个文件存储了数据源是如何被识别并被用来设置系统的。
该目录下的 boot-finished 文件是cloud-init 做的最后一件事了,(创建并写入信息)
【2】data
/var/lib/cloud/data目录包含与上一次引导相关的信息
instance-id cloud-init发现的实例的id, 更改此文件无效
result.json 结果文件,是一个json文件,里面包含了 被用来设置系统的数据源 和 所有出现的错误信息
{
"v1": {
"datasource": "DataSourceAliYun2Local",
"errors": []
}
}
status.json json文件显示所使用的数据源,如果发生任何错误,则显示所有四个模块的分解以及开始和停止时间。
{
"v1": {
"datasource": "DataSourceAliYun2Local",
"init": {
"errors": [],
"finished": 1605448297.1101456,
"start": 1605448296.9718385
},
"init-local": {
"errors": [],
"finished": 1605448296.0323591,
"start": 1605448291.9045517
},
"modules-config": {
"errors": [],
"finished": 1605448297.8589938,
"start": 1605448297.6046104
},
"modules-final": {
"errors": [],
"finished": 1605448298.8025997,
"start": 1605448298.2927012
},
"modules-init": {
"errors": [],
"finished": null,
"start": null
},
"stage": null
}
}
4 如何查看我正在使用什么数据源
[root@localhost ~]# cloud-id
aliyun
如果现实的 数据源与期望不一致,可以使用debug 模式执行脚本 ds-identify
[root@localhost data]# DEBUG_LEVEL=2 DI_LOG=stderr /usr/libexec/cloud-init/ds-identify --force [up 512766.72s] ds-identify --force policy loaded: mode=search report=false found=all maybe=all notfound=disabled /etc/cloud/cloud.cfg set datasource_list: [ AliYun ] DMI_PRODUCT_NAME=Alibaba Cloud ECS DMI_SYS_VENDOR=Alibaba Cloud DMI_PRODUCT_SERIAL=ba8aa0d6-3621-4037-ab33-c9440b0a14b3 DMI_PRODUCT_UUID=BA8AA0D6-3621-4037-AB33-C9440B0A14B3 PID_1_PRODUCT_NAME=unavailable DMI_CHASSIS_ASSET_TAG= FS_LABELS= ISO9660_DEVS= KERNEL_CMDLINE=BOOT_IMAGE=/boot/vmlinuz-3.10.0-1127.10.1.el7.x86_64 root=UUID=3d682a67-edb8-4ac7-ba8b-594f9d146fb6 ro crashkernel=auto spectre_v2=retpoline rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs VIRT=kvm UNAME_KERNEL_NAME=Linux UNAME_KERNEL_RELEASE=3.10.0-1127.10.1.el7.x86_64 UNAME_KERNEL_VERSION=#1 SMP Wed Jun 3 14:28:03 UTC 2020 UNAME_MACHINE=x86_64 UNAME_NODENAME=jinkang-e2elog UNAME_OPERATING_SYSTEM=GNU/Linux DSNAME= DSLIST=AliYun MODE=search ON_FOUND=all ON_MAYBE=all ON_NOTFOUND=disabled pid=31508 ppid=11065 is_container=false single entry in datasource_list (AliYun) use that. [up 512766.73s] returning 0
5 我应该如何重新执行数据源检测 并 初始化
强制 重新执行ds-identify,清理日志,重新执行cloud-init
$ sudo DI_LOG=stderr /usr/lib/cloud-init/ds-identify --force $ sudo cloud-init clean --logs $ sudo cloud-init init --local $ sudo cloud-init init