saltstack 实战:配置管理文件

文件管理

master上

vi /etc/salt/master 
# 搜索找到file_roots
 打开如下内容的注释:

file_roots:
  base: 
    - /srv/salt

创建目录

mkdir /srv/salt 
cd /srv/salt

配置入口文件

# /srv/salt/top.sls  
# 加入如下内容

base:
  '*':  #前面有两个空格
    - file #前面有4个空格

# 意思是,在所有的客户端上执行httpd模块

重启master服务

systemctl restart salt-master

配置管理文件

master上加入如下内容

# vi /srv/salt/file.sls
file_test:
  file.managed:
    - name: /tmp/ping.com
    - source: salt://test/123/1.txt
    - user: root
    - group: root
    - mode: 600

说明:第一行的file_test为自定的名字,表示该配置段的名字,可以在别的配置段中引用它,source指定文件从哪里拷贝,这里的salt://test/123/1.txt相当于是/srv/salt/test/123/1.txt

实验配置文件

mkdir /srv/salt/test/123

cp /etc/passwd /srv/salt/test/123/1.txt

修改入口文件

# vi /srv/salt/top.sls
base:
 '*':
  - test

执行

salt 'salt2' state.highstate  # 检查salt2上是否有/tmp/ping.com,检查内容以及权限
salt 'salt2' state.apply file # 指定更新某个sls

目录管理

master上

# /srv/salt/dir.sls
file_dir:
  file.recurse:
    - name: /tmp/testdir
    - source: salt://test/123
    - user: root
    - file_mode: 640
    - dir_mode: 750
    - mkdir: True
    - clean: True  # 加上它之后,源删除文件或目录,目标也会跟着删除,否则不会删除

修改入口文件

base:
 '*':
  ...
  ...
  - dir

执行: salt 'salt2' state.apply dir 检查salt上是否有/tmp/testdir,检查里面的目录、文件以及权限

注意:如果source对应的目录里有空目录的话,客户端上不会创建该目录

最后更新于

这有帮助吗?