Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1095727
  • 博文数量: 186
  • 博客积分: 4939
  • 博客等级: 上校
  • 技术积分: 2075
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-08 17:15
文章分类

全部博文(186)

文章存档

2018年(1)

2017年(3)

2016年(11)

2015年(42)

2014年(21)

2013年(9)

2012年(18)

2011年(46)

2010年(35)

分类: 系统运维

2015-05-15 16:29:42


  1. cat 8.db.prod.slv.xxx.yaml
  2. ---
  3. mysql_instances:
  4.   - "01"
  5.   - "11"
以上是puppet的hieradata,现在要生成以下内容:

---

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。最后就是判断打印要生成内容,不难,就是有点烦吧。




阅读(1823) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~