一、简介

  1. Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信
  2. Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口
  3. salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制
  4. 如果连接断开,sever端将无法对客户端进行控制;客户端若检查到断开后会定期的一直连接master端

二、部署

1、server端部署

rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm

yum -yinstallsalt-master

2、client端部署

rpm -Uvh http://mirror.pnl.gov/epel/5/i386/epel-release-5-4.noarch.rpm

yum -yinstallsalt-minion

3、server配置文件(/etc/salt/master)

interface: 115.28.2.1#此处是server端监听的地址。
auto_accept: True#此处是自动接受客户端发送过来的key,如果服务器很多的话,需要开启该功能

4、client端配置(/etc/salt/minion)

master: 115.28.2.1#这里改成你的master服务器地址
id: web01#建议这里修改成主机名,便于master端分辨

#每5分钟自动与master同步配置

schedule:
highstate:

function:state.highstate
minutes: 5

 5、启动

(1)启动server端
/etc/salt/master -d    #后台启动

(2)启动client端
/etc/salt/minion -d

注意:minion启动后,自动会生成公钥私钥,并把公钥发送到master端。minion不监听端口,全靠和master保持长连接,可通过netstat-an|grepES来查看是否有连接

master证书存放位置:

/etc/salt/pki/master/minions

salt-key  -L#查询所有接收到的证书

salt-key  -a <证书名>#接收单个证书

salt-key  -A#接受所有证书

salt-key  -d <证书名>#删除单个证书

salt-key  -D#删除所有证书

三、语法

标准格式:salt [选项]''  [arguments]

salt '*' test.ping    #*为匹配所有主机,test.ping为salt一个函数,注:*号是正则,若分了多个组,可以类似于web*,只匹配web服务器

salt '*' cmd.run 'df -h'    #查看所有主机的磁盘信息,cmd.run执行单个命令

salt '*' cmd.script  salt://scripts/runme.sh 'arg1 arg2 "arg 3"'    #cmd.script执行一个脚本,即把本地脚本拷贝到远程主机上执行,hello.sh要放在指定的文件存放路径,默认是/srv/salt/

salt '*' state.highstate    #向客户端推送master端配置。

salt '*' cmd.run 'df -h ' -t 5    #超时控制

特殊常用项:
salt-cp '*' /etc/hosts/etc/hosts  #把master上的hosts文件分发到所有主机

四、分组管理

格式:示例
nodegroups:
  group1: 'L@op-test-107,op-test-108'
  group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com'
  group2: 'G@os:Debian and foo.domain.com'
  group3: 'G@os:Debian and N@group1'
  group4:
    - 'G@foo:bar'
    - 'or'
    - 'G@foo:baz'

五、分组执行

salt -N group1 cmd.run 'hostname'

六、客户端状态检查

注:该处状态检查salt使用的是test.ping,如果服务器禁ping,则该处不准。

salt-run manage.status#查看所有客户端up/down状态

salt-run manage.up#只显示up状态的客户端

salt-run manage.down#只显示down状态的客户端

七、自动分发文件

1、指定同步目录后,文件只需放到该目录下就会自动同步到minion端

2、top.sls文件中指定哪些主机访问哪些目录

3、用dir_mode和file_mode来设置文件和目录的权限(- dir_mode: 755;- file_mode: 744)

示例:
/data/share:    #moni上的文件
  file.managed:
    - source:     #源文件位置
    - user:    #文件属主
    - group:    #文件属组
    - mode:    #文件权限

八、进程管理

cat pack.sls
apache:
  pkg:
    - name: httpd
    - installed
  service:
    - name: httpd
    - running
    - reload: True
    - watch:    #关注文件,如果发生变化就reload(reload是true)
        - file: /etc/httpd/conf/confd.conf

/etc/httpd/conf/confd.conf
  file.manageed:
    - source: salt://    #文件来源
    - user: root
    - group: root
    - mode: 644
    - backup: minion    #备份

九、根据需求自定义模块

查看支持的模块:salt '*' sys.list_modules

参考:http://rfyiamcool.blog.51cto.com/1030776/1262537

本文摘抄于:https://www.jianshu.com/p/eb4026e4cf96

02-11 21:54