1,安装saltstack

服务端:salt-master 
客户端:salt-minion

yum install -y salt-master
yum install -y salt-minion

2,开放服务端iptables

iptables -A INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
iptables -A INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

3,启动服务

服务端:

vim /etc/salt/master
interface: 服务器监听IP,#默认0.0.0.0

启动服务:

/etc/init.d/salt-master start

开机启动:

chkconfig salt-master on

调试模式:

salt-master -l dubeg

后台运行:

salt-master -d

监听端口: 
4505(publish_port):salt消息发布系统 
4506(ret_port):salt客户端与服务端通信端口 

客户端:

vim /etc/salt/minion
master: 服务端主机名
id: 客户端主机名(在服务端看到客户端的名字)

启动服务:

/etc/init.d/salt-minion start

开机启动:

chkconfig salt-minion on

4,key颁发

salt-key
Accepted Keys:
Unaccepted Keys:
test.itnihao.com
Rejected Keys:

salt-key -A     #添加所有客户端
salt-key -a minion-id    #添加单独一个minion id

5,测试

salt \* test.ping
VM-243:
    True
VM-244:
    True
VM-245:
    True
VM-242:
    True

以上步骤是安装saltstack完成,并正常通信 
下面要配置客户端服务安装,文件同步等

6,安装apache

创建入口文件:

mkdir /srv/salt -p
vim /srv/salt/top.sls
base:
  '*':              #匹配客户端,"*"匹配表示匹配所有
    - web.apache    #web目录下apache.sls文件

mkdir /srv/salt/web
vim /srv/salt/web/apache.sls
apache_install:
  pkg:
    - name: httpd
    - installed
  service:
    - name: httpd
    - running
    - reload: True
    - watch:
      - file: /etc/httpd/conf/httpd.conf

/etc/httpd/conf/httpd.conf:
  file.managed:
    - source: salt://web/httpd.conf.jinja
    - template: jinja
    - user: root
    - group: root
    - mode: 644
    - backup: minion

/var/www/html/index.html:
  file.managed:
    - source: salt://web/index.html.jinja
    - template: jinja

vim /srv/salt/web/httpd.conf.jinja
<VirtualHost *:80>
    ServerName {{ salt['network.interfaces']()['eth0']['inet'][0]['address'] }}
    DocumentRoot /var/www/html/
    ErrorLog logs/error.log
    CustomLog logs/access.log common
</VirtualHost>

vim /srv/salt/web/index.html.jinja
<h1>Welcome to {{ grains['fqdn'] }}</h1>

运行命令

salt \* state.sls web.apache
VM-242:
----------
          ID: apache_install
    Function: pkg.installed
        Name: httpd
      Result: True
     Comment: Package httpd is already installed.
     Started: 13:52:15.979353
    Duration: 639.22 ms
     Changes:   
----------
          ID: /etc/httpd/conf/httpd.conf
    Function: file.managed
      Result: True
     Comment: File /etc/httpd/conf/httpd.conf is in the correct state
     Started: 13:52:16.723650
    Duration: 80.393 ms
     Changes:   
----------
          ID: apache_install
    Function: service.running
        Name: httpd
      Result: True
     Comment: The service httpd is already running
     Started: 13:52:16.807976
    Duration: 41.296 ms
     Changes:   
----------
          ID: /var/www/html/index.html
    Function: file.managed
      Result: True
     Comment: File /var/www/html/index.html updated
     Started: 13:52:16.853234
    Duration: 16.49 ms
     Changes:   
              ----------
              diff:
                  New file
              mode:
                  0644

Summary
------------
Succeeded: 4 (changed=1)
Failed:    0
------------
Total states run:     4

测试,打开网页访问

wKioL1XEWT_QJndKAAB0trLr4QI130.jpg

wKiom1XEV0SxlX_4AABr7yZGhIQ613.jpg

wKiom1XEV0bBY8UeAABrXYgfnxw204.jpg

wKioL1XEWUKTyO3JAABoYLkzEW4026.jpg