远程操作:

salt ‘*’  cmd.run  "uptime"



一 实例操作:


1 说明:yum安装apache 并且在master端同步httpd.conf文件,而且当这个文件修改时重启apache

2 结构目录

[root@slave salt]# tree

.

├── apache

│   ├── apache.sls

│   └── httpd.conf

├── top.sls


top.sls:是salt的入口 执行的第一个文件

apache.sls:具体的操作写在这里

httpd.conf:需要同步到客户端的apache主配置文件



[root@slave salt]# cat top.sls
base:                     ##base语法告诉Salt这是基础配置文件
  '*':                    ## 被执行的对象 *表示所有的客户端 可以在这单独写某一个客户端的ID 如slave-142
    - apache.apache       ## 第一个apache是在/srv/salt/ 的目录 第二个其实是apache.sls 但是这里可以直接写成apache
  'slave-142':            ## 单指一台期机器
    - ntp.sls




[root@slave salt]# cat apache/apache.sls
apache:                                      ##ID标识 可以随意取
  pkg:                                       ##安装包管理
    - name: httpd                   
    - installed               ##执行安装操作
  service:                                   ##服务管理
    - name: httpd                           
    - running                                ##保证上述的httpd服务启动
    - reload: True                           ##观察watch制定的文件 要是文件有修改 重启
    - enable: True                           ##服务开启启动
    - watch:
       - file: /etc/httpd/conf/httpd.conf    ##客户端的配置文件



/etc/httpd/conf/httpd.conf:            ##客户端的配置文件
  file.managed:                        ##文件管理
    - source: salt://apache/httpd.conf  ##服务器端本地的文件和路径  salt//这个配置在master中配置 默认是在/srv/salt/ 需要开启注视
    - user: root
    - group: root
    - mode: 644
    - backup: minion                    ##执行操作前备份



执行操作:

由于之前我过操作 httpd已经成功安装 这次测试的是修改了httpd.conf文件

[root@slave salt]# salt '*' state.highstate
68:
----------
          ID: apache
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed
     Changes:  
----------
          ID: /etc/httpd/conf/httpd.conf
    Function: file.managed
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf updated
     Changes:  
              ----------
              diff:
                  --- 
                  +++ 
                  @@ -1007,5 +1007,5 @@
                   #    ErrorLog logs/dummy-host.example.com-error_log
                   #    CustomLog logs/dummy-host.example.com-access_log common
                   #</VirtualHost>
                  -####hihi test###    修改的时候去掉了这行
                  -###test    #   修改的时候去掉了这行
                  +####20140414  test###  新添加行
                  +###test 2014   #新添加行
                       
----------
          ID: apache
    Function: service.running
        Name: httpd
      Result: True
     Comment: Service reloaded
     Changes:  
              ----------
              httpd:
                  True
Summary
------------
Succeeded: 3
Failed:    0
------------
Total:     3



当你在一个sls中写有多个操作但是要只操作一个   salt '*' state.highstate exclude="[{'id':'httpd'}]"  -t 60

当不需要操作所有的客户端 可以 salt 'slave-143'   state.highstate 只操作一台机器

当只想操作一个sls文件  salt 'slave-143' state.sls  httpd  ##对143这个客户端执行httpd.sls文件操作