运维平台的代码可以随便放在一台合适的服务器上面,并不需要在该台服务器上有saltstack或git,因为saltAPI可以实现你几乎所需的操作或功能,用好saltAPI就可以了。关于代码的更新、提交、下发、同步操作就用saltsatck和saltAPI来做就好。
其实一个自定义函数updateObject()
就可以搞定所有的,考虑git server
提交更新完成后,测试服务器pull到本地测试环境,经过测试环境的测试没有问题,再下发到正式环境时就不需要再反复的向server提交更新代码了,正式环境的服务器直接pull到本地就行了,所以又堆了个函数pushObject()
。
1、提交更新下发文件函数updateObject在第2篇中提到过,下面详细扯扯:
更新的代码文件拷贝到workdir目录后经过git.add、git.status、git.commit一系列操作后就可以git.push到serverdir目录了,然后正式或测试服务器就可以愉快的git.pull新鲜出炉的代码了。
1 | #gname是salt的分组后的组名,正式环境当然用正式环境的那组服务器了 |
2、仅仅执行下发命令的函数pushObject,该函数就仅仅完成上面函数的最后一步,通知测试或正式环境的服务器执行更新代码的操作。
1 | def pushObject(workdir, serverdir, slsfile, gname, flag): |
3、在saltstack上的sls文件,写的很简单就是在测试或正式环境的服务器上执行更新代码(git pull、rsync、backup等)操作。
1 | $ cat project1.sls |
4、sls文件的功能说到底就是执行一个更新脚本,更新脚本做了git.pull从git server上获取新鲜的代码,rsync将获取到的代码同步到生产环境的目录,备份被更新的代码这三件事。
1 | $ cat project.sh |