内容简介:以前闭着眼睛用 matchbox+dnsmasq+bootkube来全自动化安装 coreos的 tectonic服务,现在coreos也步docker后尘了,每个tectonic版本出来都变化巨大,不向前兼容,还没什么文档,全靠瞎摸索。每个版本出来,配置文件很多,手工一个个更新太麻烦,直接重装系统吧,安装是快,5分钟搞定,但各种rkt,docker镜像,拜gfw所赐,一天能下载完算运气好的了(有梯子也不好使)。所以琢磨一下怎么不重装系统,把配置文件比较快捷的更新掉,据.......很久很久的研究,发现配
以前闭着眼睛用 matchbox+dnsmasq+bootkube来全自动化安装 coreos的 tectonic服务,现在coreos也步 docker 后尘了,每个tectonic版本出来都变化巨大,不向前兼容,还没什么文档,全靠瞎摸索。
每个版本出来,配置文件很多,手工一个个更新太麻烦,直接重装系统吧,安装是快,5分钟搞定,但各种rkt,docker镜像,拜gfw所赐,一天能下载完算运气好的了(有梯子也不好使)。
所以琢磨一下怎么不重装系统,把配置文件比较快捷的更新掉,据.......很久很久的研究,发现配置文件是装机时,通过一个叫ignitoin的方式灌进系统的。
ignition的配置文件很容易在matchbox上找到,通过 http://matchbox:8080/ignition% ... alled 很方便的下载下来了。可怎么用了?以前的cloud-init配置可以直接用coreos-cloudinit --from-file=xxxx, 可这个文件不能这么用啊。
继续折腾,翻官方文档,说启动过程中,先加载内核,内核可以加一个参数判断是不是第一次启动。如果第一次启动,就执行ignitoin配置。查看/boot/分区,在coreos/grub下发现grub.cfg.tar(什么时候用压缩文件了,印象中grub.cfg不一直是明文的么),解开看了看,差不多明白咋回事了,就是在/boot/coreos下touch一个first_boot文件,内核就认为是第一次启动了。官方文档说内核会从网络上下载ign配置文件执行,OK,立即touch文件,重启。。。。。。。啥效果都没看到,配置文件还是老的啊。
折腾again,看看系统日志,journalctl -t ignitiong --no-pager, 可以看到ignition确实执行了,还把json格式文件的配置给我看了,可tmd是老的配置文件啊,我手头有新配置文件啊,放哪儿内核能找到呢?
.......动用find大发,在/var目录,/etc目录等,搜啊搜,啥都没收到。没有任何文档告诉我ignition的配置文件放哪儿的。 对于代码小白,又看不懂源代码。
继续看日志吧,发现在ignitoin之前,有这么一段:
Sep 28 05:18:46 localhost ignition[264]: Ignition v0.17.2 Sep 28 05:18:46 localhost ignition[264]: parsed url from cmdline: "oem:///coreos-install.json" Sep 28 05:18:46 localhost ignition[264]: oem config not found in "/usr/share/oem", trying "/mnt/oem" Sep 28 05:18:47 localhost ignition[264]: op(1): [started] mounting "/dev/disk/by-label/OEM" at "/mnt/oem" Sep 28 05:18:47 localhost ignition[264]: op(1): [finished] mounting "/dev/disk/by-label/OEM" at "/mnt/oem" Sep 28 05:18:47 localhost ignition[264]: op(2): [started] unmounting "/mnt/oem" Sep 28 05:18:47 localhost ignition[264]: op(2): [finished] unmounting "/mnt/oem"
看样子它在找oem配置,找一个coreos-install.json, 动用find大法,发现在/usr/share/oem中有这么一个文件。查看内容,果然是ignitoin的配置文件(可日志还非常瞎掰的说oem config not found in "/usr/share/oem")。
OK,把手头的新配置文件覆盖上去,再touch first_boot, 重启,终于搞定,打完收工。
----------分割线----------
Ignition是coreos开发的一种新型的系统初始化配置方式,
主页 https://coreos.com/ignition/
对比它自家的cloud-init,据说有以下特点:
. 只运行一次。在系统安装完成后,第一次开机启动时运行。
. 执行时间非常早,在内核加载后,initramfs阶段执行,所以可以干很多在系统阶段没法干的事情,如格式化磁盘,调整网络配置,写只读文件系统等事情。
. json化配置文件,简单易用。
-------继续分割线-----
感叹一下,现在coreos更新很快,没有了林帆 @帆 大神更新大作 《coreos实践之路》,这coreos越来越不知道怎么用了,这coreos要想大规模普及,任重道远啊!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- SeaGlass:手工搭建伪基站监控系统
- 从手工测试到测试开发,这样学习最高效!
- QQA: Hibernate 为什么需要手工管理双向关联
- 匠心独运解读Mybatis源码,纯手工打造开源框架
- 经验拾忆(纯手工)=> Python好用深度技能工具介绍
- 手工计算神经网络第三期:数据读取与完成训练
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。