不知道使用 yaml 有什么好处

2018-11-24 14:58:20 +08:00
 gino86

纯吐槽,现在越来越多的配置文件使用 yaml 格式,不知道有什么好处(结构更清晰?)
例如,ubuntu 的网络配置方式到 1804 之后就推荐使用 netplan,netplan 的配置文件就是 yaml 格式
ansible 可用的配置文件方式有两种,一种是 ini,另一种是 yaml,个人认为 ini 格式更加简短,使用 yaml 又(结)长(构)又(清)臭(晰),但 playbook 只能使用 yaml。
另外,yaml 好像不支持 tab,曾经就因为这个原因出过错,使用 vim 编辑就需要 set expandtab

13868 次点击
所在节点    程序员
78 条回复
azh7138m
2018-11-24 18:53:31 +08:00
@kaneg
> json 能表示的 yaml 都可以,反之不定

求一个 yaml 可以表示,但是 json 不能的例子
kcats
2018-11-24 18:54:43 +08:00
只有我一个人觉得 JSON 更好?
beginor
2018-11-24 18:58:17 +08:00
@azh7138m 多行文本
beginor
2018-11-24 19:00:40 +08:00
我也觉得 yaml 适合配置,JSON 适合数据传输。 但是 yaml 格式不如 JSON 严谨 。
VDimos
2018-11-24 19:07:06 +08:00
我一直以为大家都觉得 yaml 好用,原来这么多人不喜欢
honeycomb
2018-11-24 19:09:46 +08:00
@gino86 yaml 可以直接等价成 json
kcats
2018-11-24 19:11:48 +08:00
@beginor 我倒是觉得 JSON 不适合传输啊, 如果是为了效率的话, mp 或者 pb 都是不错的选择, 如果为了解耦的话, 任何一个自解释的结构都可以, 但是 json 太过于严格了
sunmonster
2018-11-24 19:45:06 +08:00
@azh7138m 之前就有看过相关的文章,现存的配置文件多多少少都有问题,json 最大的问题是不支持注释,xml 太臃肿,ini 太简单了,不支持多层次结构,相对来说 yaml 就好得多,还有 toml
lolizeppelin
2018-11-24 19:49:10 +08:00
机器需要个毛可读性

配置文件都是在考虑人的可读性 因为是给人看人改的
只给机器读的配置要考虑的是性能问题

yaml 也好 json 好都不适合层级过多的配置,因为层级过多人根本看不了
在少量配置的情况下 yaml 和 json 都优于 ini。
yaml 可读性么 json 差不多。但是 yaml 格式不容易写错 也容易排错,json 多了还有数不清楚括号的问题

openstack 这种海量配置的. 最好的方案就是 INI 以及加少层级 配合多文件
要是 yaml 能解决 openstack 也不会专门弄 cfg 库了

还有
ini 可以表达层级的...看看 openstack 里怎么做的就对了


总之,如果你配置文件有大量层级要表达....你需要重新设计配置文件了
kingcos
2018-11-24 20:02:39 +08:00
YAML 既然 AML,应该和 XML 比较吧。确实格式更加精简,JSON 不能注释确实麻烦一些,ini 用的不多。。
YAML 除了缩进来排版格式有时容易弄错,但感觉还是可以接受。。
lihongjie0209
2018-11-24 20:03:25 +08:00
@kcats 在 UNIX 编程的艺术 这本书中有关于 文本 和 二进制数据格式讨论, 建议看一下. 至于说 JSON 不适合传输, 那么常见的 JSON 载体 HTTP 更不适合传输了.
lihongjie0209
2018-11-24 20:03:55 +08:00
@lolizeppelin 我一直很困惑说这话的人: 机器可读性??
wweir
2018-11-24 20:12:52 +08:00
yaml 不适合写大的配置文件,层级到七八层以后,完全没法看。别问我怎么知道的,你试试手动写 k8s 的配置去。

目前,让我选的话,我一定会选 toml,以接近 ini 的表达方式,提供了强大的结构表达能力
jamesxu
2018-11-24 20:15:11 +08:00
最烦这种靠缩进区分结构的语言
zjsxwc
2018-11-24 20:16:11 +08:00
@wweir

同感, 大一点的 yml 我恨不得来个游标卡尺量缩进
br00k
2018-11-24 20:30:25 +08:00
最近配置换成 yml,感觉可读性是不错。转换成 json 看的时候,感觉就是一堆括号。。。
artandlol
2018-11-24 20:35:26 +08:00
k8s 就使用 yaml 作为配置文件,但遇到上万行的配置怎么办呢,aws 设计了一种专门的程序语言解决。具体什么语言忘了
jimrok
2018-11-24 20:44:02 +08:00
1. 能写注释 2. 支持层级结构. 3. 支持多值(数组) 4. 可以引用。
S9Yh4wIFsBG7jnE4
2018-11-24 21:35:00 +08:00
@szq8014 你这主题为啥是绿的
azh7138m
2018-11-24 21:53:19 +08:00
@shayang888 要想生活过得去

@sunmonster 配置文件要注释干啥。。。

@beginor 多行文本为啥不行了 \n 是一个合法字符

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/511095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX