Saltstack文件管理


   当在系统中有些文件分部在成百上千台机器经常修改时,使用saltstack的file.managed管理文件状态就会让你方便很多。能让你一键完成这所有修改达到你想要的文件状态,下面去看看文章吧!

salt文件状态管理模块file.managed

使用

[root@salt-master base]# tree
.
├── system
│   ├── files
│   │   └── hosts
│   └── hosts.sls
└── top.sls
 
2 directories, 3
files
[root@salt-master base]# cat top.sls               
base:                      #这里指定的环境是base,所以这个top.sls在/srv/salt/base目录下
  "*":                     # “*”是所有主机的意思,指定单个主机直接写“salt-minion1”
    - system.hosts         # 这里指调用了那些sls配置文件,“点”在这里是目录分级
                           #也就是system没有可以下的hosts.sls配置文件
 
[root@salt-master
base]# cat system/hosts.sls
/etc/hosts:                #这个是配置ID和文件存放位置,是不可重复的
  file.managed:            #这里调用了“file.managed”salt的文件管理模块
    - source: salt://system/files/hosts #source是指定文件源,"salt://"是指salt项目下文件
    - mode: 644            #文件权限644
    - user: root           #文件用户属主
    - group: root          #文件的用户组



上面文件状态配置执行详解:

[root@salt-master system]# salt 'salt-minion1' state.highstate#salt '执行节点' 执行模块   
下面是执行结果
salt-minion1:                              #执行节点
----------
          ID: /etc/hosts                   #配置ID
    Function: file.managed                 #模块
      Result: True                         #执行结果True为成功
     Comment: File /etc/hosts updated      #文件执行操作【更新】
     Started: 14:15:55.120499              #执行命令开始时间
    Duration: 24.284 ms                    #执行的时长
     Changes:                              #是否产生更改
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -1,2 +1,4 @@
                   127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
                   ::1         localhost localhost.localdomainlocalhost6 localhost6.localdomain
                  +salt-master 10.0.0.11    #在这个带有“+”号的行是增加的,"-"号为减少行
                  +salt-minion1 10.0.0.21
 
Summary
------------
Succeeded: 1 (changed=1)                    #执行成功1个,有一个文件状态发生更改
Failed:    0                                #执行失败0个
------------
Total states run:     1                     #执行状态个数


salt命令管理文件

salt “*”file.managed /etc/zabbix/zabbix_agentd.conf salt://file/zabbix_agentd.conf root root 755
salt的sls文件写法
/etc/zabbix/zabbix_agentd.conf:
 file.managed:
- source: salt://file/zabbix_agentd.conf
- user: root
- group: root
- mode: 755

目录管理file.directory

/etc/zabbix/zabbix_agentd.conf.d:
 file.directory:
- user: root
- group: root
- mode: 755
- makedirs: Ture         #如果此目录用户不存在自动创建
- recurse:               #如果想强制将属注数组权限递归到文件夹内文件可以使用这个
  - user
  - group
  - mode

文件插入内容file.append

插入用户环境变量:
/root/.bash_profile:
 file.append:
- text:
- export JAVA_HOME=/usr/local/jdk1.6.0_22
- export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

文件拷贝file.copy

此命令即可拷贝文件也可拷贝目录:

salt “*” file.copy /data/a.dump /backup/

这句话是把/data/a.dump拷贝到/backup/目录


文件软连接file.symlink

/usr/local/zabbix/etc目录做软连接为/etc/zabbix

salt '*' file.symlink /usr/local/zabbix/etc/etc/zabbix
sls写法
/etc/zabbix:
 file.symlink:
-target: /usr/local/zabbix/etc


下面是之前写过的一些有关saltstack的文章

SaltStack使用教程(一):安装并简单配置使用

SaltStack使用教程(二):文件和目录管理

SaltStack使用教程(三):定时任务管理cron.present

SaltStack使用教程(四):服务管理

SaltStack使用教程(五):命令拉取和推送文件

SaltStack使用教程(六):管理服务妙用pillar实现centos6和centos7通配


常见的问题:


salt-master IPC文件的一次报错 

saltstack api wheel模块报错HTTP/1.1 401 Unauthorized