前面已经讲解了Webhook实现Push代码后的jenkins自动构建,接下来通过结合slatstack 实现多台机器的项目代码发布。
利用saltstack中file.recurse方法,运用该模块可以将定义的目录下所有文件都推送到远端服务器指定的位置,而且只需要一条命令,接下来我们就演示一下该方法的用法。
master 角色服务器上
saltstack配置文件中修改file_roots路径:
grep "file_roots" -A3 -B3 /etc/salt/master | grep -vE "(^#|^$)"
这里为了方便测试,所以直接将salt的资源路径改到了nginx指向的项目根目录。
1 [root@iz2ze4j1iyce3b7muq6jtiz web]# pwd 2 /home/web 3 [root@iz2ze4j1iyce3b7muq6jtiz web]# vim 4 .idea/ index.php mall-api-salt/ swoole/ test.sls 5 [root@iz2ze4j1iyce3b7muq6jtiz web]# vim test.sls 6 test: 7 file.recurse: 8 - source: salt://mall-api-salt 9 - name: /var/www/mall-api 10 - user: nginx 11 - group: nginx 12 - dir_mode: 755 13 - file_mode: 644 14 - include_enpty: True
注释:
file_rsync:sls文件名,这里是file_rsync.sls file.recurse:调用file模块下的recurse方法 source: salt://tools :定义源文件,即将要推送走的文件和路径 name: /opt/tools:推送到远端服务器上的位置和名称 user: root:文件(目录)的属主 group: root:文件(目录)的用户组 dir_mode: 755 目录的权限为755 file_mode: 644 文件的权限为644 makedirs: True 如果目录不存在则创建 backup: minion 开启备份 include_enpty: True 包含空文件(目录) 执行命令:salt 对象 state.sls sls文件
利用如下命令测试:
salt '*' state.sls test
登录到minion角色服务器
可以看到已经成功
结合jenkins实现自动化发布代码到多台
有了前面的基础接下来实现需要的功能非常容易,只需要让jenkins构建成功后,执行salt的脚本即可,具体如下图。