Saltstack 迭代同步目录下的文件到客户端

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

    有时候项目上线,需要将本地或者跳板机上的发布版本发布到服务器上,如果服务器数量少,可以一台一台手动拷贝,一旦遇到数量成百上千的服务器,手动拷贝就满足不了需求,那有什么好点的方法呢?

前不久在看saltstack,其中有个模块个人觉得相当不错,那就是file.recurse方法,运用该模块可以将定义的目录下所有文件都推送到远端服务器指定的位置,而且只需要一条命令,接下来我们就演示一下该方法的用法。

saltstack配置文件中修改file_roots路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@server01 base] # grep "file_roots" -A3 -B3 /etc/salt/master |grep -vE "(^#|^$)"
--
file_roots:
   base:
     /srv/salt/base
--
[root@server01 base]
[root@server01 base] # cd /srv/salt/base
[root@server01 base] # pwd
/srv/salt/base
[root@server01 base]
[root@server01 base] # vim file_rsync.sls 
file_rsync:   
    file .recurse:   
      source : salt: //tools  
      - name:  /opt/tools   
      - user: root   
      - group: root   
      - dir_mode: 755   
      - file_mode: 644   
      - makedirs: True   
      - backup: minion   
      - include_enpty: True
[root@server01 base] #


注释:

1
2
3
4
5
6
7
8
9
10
11
12
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文件


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@server01 base] # salt '*' state.sls file_rsync
...............................省略部分..............................
Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
[root@server01 base] #
[root@server01 base] # salt '*' cmd.run 'ls -al /opt/'
server03:
     total 0
     d---------   3 root root  19 Aug 23 01:57 .
     dr-xr-xr-x. 18 root root 256 Jun 14 04:04 ..
     drwxr-xr-x   6 root root 246 Aug 23 02:22 tools
server02:
     total 0
     d---------   3 root root  19 Aug 23 01:57 .
     dr-xr-xr-x. 18 root root 256 Jun 14 04:03 ..
     drwxr-xr-x   6 root root 246 Aug 23 02:22 tools
server04:
     total 0
     drwxr-xr-x.  3 root root  19 Aug 23 01:57 .
     dr-xr-xr-x. 18 root root 256 Aug 16 03:28 ..
     drwxr-xr-x   6 root root 246 Aug 23 02:22 tools
[root@server01 base] #


从这里发现目录tools已经推送到客户端服务器上。



      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1958636,如需转载请自行联系原作者





相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
NoSQL Ubuntu 网络安全
|
网络协议 开发工具