内容简介:以前闭着眼睛用 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好用深度技能工具介绍
- 手工计算神经网络第三期:数据读取与完成训练
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book, Vol. 2
Patrick McNeil / How / 2010-9-19 / USD 30.00
Web Design Inspiration at a Glance Volume 2 of The Web Designer's Idea Book includes more than 650 new websites arranged thematically, so you can easily find inspiration for your work. Auth......一起来看看 《The Web Designer's Idea Book, Vol. 2》 这本书的介绍吧!