今天遇到一个坑,我觉得有必要来填补一下
salt 的文件同步功能网上找的大部分功能都是描述怎么同步到minion端,同步方式只增不减,这有什么意义,今天就是解决这没有意义的事。
安装配置就不介绍了,直接上配置:master的配置,主要看file_roots开始的部分
[root@server1 ~]# cat /etc/salt/master | grep -v "#" | grep -v "^$"
interface: 0.0.0.0
publish_port: 4505
user: root
ret_port: 4506
pidfile: /var/run/salt-master.pid
worker_threads: 4
file_roots:
base:
- /data/salt
dev:
- /data/salt/tools
log_file: /var/log/salt/master
接下来进入到配置的根目录下:
[root@server1 ~]# cd /data/salt
[root@server1 salt]# ls
file_rsync.sls tools
[root@server1 salt]#
有这样一个文件:file_rsync.sls,手动创建它,内容如下:
[root@server1 salt]# cat file_rsync.sls
file_rsync:
file.recurse:
- source: salt://tools/
- name: /data/salt
- user: root
- group: root
- dir_mode: 755
- file_mode: 644
- makedirs: True
- backup: minion
- include_enpty: True
- clean: True
[root@server1 salt]#
其中最重要的一行就是最后面那行:clean: true.表示如果服务端删除了minion端也跟着删除,就像rsync –delete的参数。
接下来使用方式:
首先重启服务端: systemctl restart salt-master
然后输入这个命令就可以同步了:salt node1 state.sls file_rsync
file_rsync是我们刚才创建的文件的名字,也可以是别的名字,同步效果: