Igniton 配置手工更新">Igniton 配置手工更新

以前闭着眼睛用 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要想大规模普及,任重道远啊!

赞 (0) 评论 分享 ()