分类: 系统运维
2015-05-15 16:29:42
---
mysql_instances:
- "01"
- "11"
mysql_props:
"01":
mysql_server_id: 1080101
mysql_port: 7001
mysql_socket: /var/lib/mysql/mysql.sock01
"11":
mysql_server_id: 1080111
mysql_port: 7011
mysql_socket: /var/lib/mysql/mysql.sock11
就是添加每个instance id的Key/value,
awk -F \" '{m=m"\n"$0}/[0-9]/{c[j++]=$2;split(FILENAME,b,".")}END{print m"\n\nmysql_props:";for(m=0;m
if(c[m]%2==0)N="00";else N="01"
if(b[1]<10)b[1]="10"b[1]
print " \042"c[m]"\042:\n mysql_server_id: "b[1]""N""c[m]"\n mysql_port: 70"c[m]"\n mysql_socket: /var/lib/mysql/mysql.sock"c[m]}}'
解释:
if(b[1]<10)b[1]=“10”b[1],当文件名字是1-9,比如4.db.prod.slv.xxx.yaml, 那么前面加个10,就是尽可能补足6位,以免server_id重复。
其实就是记录源文件内容到m,然后当匹配数字的时候按顺序存入数组c, split获取主机序列,比如8。最后就是判断打印要生成内容,不难,就是有点烦吧。