文章目录
- 一、背景
- `t1.yml`
- `t2.yml`
- 二、下载yq工具
- 三、进行合并
- 三个文件一起合并
- 四、注意事项
- 合并后yml文件的顺序会发生变化、注释会被删掉
- 如果值为true或者false,则需要加双引号。否则会导致多个yml文件具有相同的key时,不会优先使用第一个yml文件中的key值
一、背景
我有两个yml文件t1.yml和t2.yml,需要对它们取并集,如果有相同的值则使用t2.yml中的
t1.yml
redis:ip: 192.168.1.2port: 6379#数据库
database:type: mysql #数据库类型,可选mysql和Oracleip: 192.168.1.3 #数据库IP地址port: 3306 #数据库端口
t2.yml
git:- project: https://192.168.2.2/devops.gitsubDir: devops #检出到子目录,必填项database:ip: 192.168.1.4user: devopspassword: devops
二、下载yq工具
yq2.4.0
注意:
高版本不支持下面的操作,建议下载2.4.0版本
三、进行合并
chmod +x yq_linux_amd64
./yq_linux_amd64 m -i t2.yml t1.yml #合并后的结果保存到t2.yml
cat t2.yml
可以看到,数据库的IP会用t2.yml里面的192.168.1.4
三个文件一起合并
./yq_linux_amd64 m -i t3.yml t2.yml t1.yml #把t2.yml和t1.yml的内容合并到t3.yml,t2.yml和t1.yml的内容不变