这里演示如何将 salt-master 上的目录批量分发到多台 salt-minion,步骤如下:
[root@localhost ~]$ cat /srv/salt/top.sls # 先定义入口配置文件
base:
'*':
- send_directory
[root@localhost ~]$ cat /srv/salt/send_directory.sls # 定义要加载的sls文件
send_directory: # send_directory 只是一个标识,方便我们查看这个文件的作用
file.recurse: # file.recurse函数用来管理文件
- name: /tmp/test # 指定分发到目标 minion 的哪个目录,如果目标目录存在会被覆盖
- source: salt://test # 指定源目录的路径,salt://test 相当于 /srv/salt/test
- user: root # 指定目录的属主
- file_mode: 640 # 指定目录下文件的权限
- dir_mode: 750 # 指定目录下子目录的权限
- mkdir: True # 如果目标路径没有该目录,则自动创建该目录
- clean: True # 设置当我们删除源目录下的文件或目录时,如果再执行该sls文件,那么目标也会跟着删除
# 注意:file.recurse 并不会一锅端把源目录覆盖到目标目录,如果源目录下的子目录没有文件,那么这个子目录是不会被分发过去的
[root@localhost ~]$ mkdir /srv/salt/test # 创建源目录
[root@localhost ~]$ salt '*' state.highstate # 通过state模块,会自动去找/srv/salt/top.sls文件,然后top.sls会去加载send_directory.sls文件,最终实现目录分发