• 欢迎访问蜷缩的蜗牛博客 蜷缩的蜗牛
  • 微信搜索: 蜷缩的蜗牛 | 联系站长 kbsonlong@qq.com
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

saltstack应用之批量部署mysql

Saltstack 蜷缩的蜗牛 8个月前 (01-15) 52次浏览 已收录


源码包:http://pan.baidu.com/s/1mgic8U8

应用环境:

使用 salt 写了个自动部署 mysql 的配置配置管理文件,由于 mysql 的有版本号,端口等不确定属性,需要使用 pillar 来单独配置每个 minion 的属性。

一,原始方法

例如,需要在 salt id 为 10.1.1.1-centos.game.web 的服务器上部署 mysql,版本号为 5.5.25,实例有 3 个,3306,3307,3308, 正常情况下的流程是这样的:

1,在/srv/salt/top.sls 中添加配置信息,确保 mysql 对应的配置被加载

2,在/srv/pillar/top.sls 配置 minion 对应的 sls 文件位置(ps:salt 文件中不能再带”.”,否则会报错)

3,新建/srv/pillar/custom/10-1-1-1-centos-game-web.sls,内容如下:

4,执行同步命令

二,改进方法
oh,shit,说好的自动化呢,怎么还要这么多步骤,这可不行!
利用 py 模式的 sls 配置文件(其实就是python脚本,只要返回 yaml 格式的字典文件就好了),我们可以将以上的操作简化成 1 步,思路如下:
1,/srv/pillar/top.sls 中编写配置:

2,使用 py 模式编写/srv/pillar/custom/init.sls,自动读取 pillar 配置,例如 salt id 是:10.1.1.1-centos.game.web,那么 project 为 game,然后根据获取的 pillar_root 组合成路径/srv/pillar/custom/game/10.1.1.1-centos.game.web.yaml,利用 yaml 模块从文件中读取信息,返回字典
3,在/srv/salt/top.sls 文件中匹配所有的 minion

4,/srv/salt/centos/public_services/init.sls 文件使用 py 模式编写,配置会获取对应的 minion 的 pillar 信息,如果包含 mysql 配置信息且配置正确的话,则返回 mysql 实例的配置。

那现在要怎么使用呢,很简单,例如你的 id 为 10.1.1.1-centos.game.web,首先在/srv/pillar/custom/目录下建个 game 目录(从 salt id 获取的项目名),然后在 game 目录先新建文件 10.1.1.1-centos.game.web.yaml,里面写上配置信息:

静静的等待执行完成就好了!

三,具体代码

/srv/pillar/custom/init.sls

/srv/salt/centos/public_services/init.sls

/srv/salt/centos/public_services/mysql/5/init.sls

/srv/salt/centos/public_services/mysql/5/packet.sls
mysql 软件包要放到相应的目录中,具体位置参考下面配置

/srv/salt/centos/public_services/mysql/5/my_cnf.sls
注意修改最后的初始化密码
my.cnf 配置文件需要放到对应的目录中,my.cnf 文件中要设置对应的模板变量:

/srv/salt/centos/public_services/mysql/5/instance.sls
mysql 启动脚本需要放到对应的目录中,启动脚本中要设置对应的模板变量:

四,总结
这个方法不仅可以用在 mysql,同样的nginxredis等都可以举一反三,配置文件编写完成后,仅仅需要简单的在 pillar 中添加几个变量就可以轻松批量部署了。

本文转载自 saltstack 应用之批量部署 mysql


蜷缩的蜗牛 , 版权所有丨如未注明 , 均为原创丨 转载请注明saltstack 应用之批量部署 mysql
喜欢 (0)
[]
分享 (0)