saltstack学习笔记

简介

Slatstack是一套远程执行+配置管理的系统管理工具,类似Puppet、Func。

一些资源:

安装

saltstack还没有自己的安装源,目前可以通过epel安装

服务端:yum -y install salt-master

客户端:yum -y install salt-minion

配置

服务端主要配置

vim /etc/salt/master
interface: xxx.xxx.xxx.xxx  #监听地址
timeout: 10                 #超时时间
file_roots:
  base:
    - /srv/salt
pillar_roots:
  base:
    - /srv/pillar

客户端主要配置

vim /etc/salt/minion
master: xxx.xxx.xxx.xxx         #服务器端地址
id: xxx.xxx.xxx.xxx             #本机id
schedule:                      #每隔30分钟去服务器同步一次资源
  highstate:
    function: state.highstate
    seconds : 30

启动服务

服务端:service salt-master start

客户端:service salt-minion start

认证:

服务端执行一下命令接受客户端认证请求:

salt-key -L  #查看等待认证的客户端列表
salt-key -A  #接受所有客户端认证请求

至此,saltstack的基本运行环境就搭建完毕了。

基本命令

第一个saltstack命令

salt '*' test.ping

用来检测客户端状态是否正常,正常的话会返回True;

‘*’ 表示向所有minion发送命令,saltstack同样支持按照分组、正则等规则匹配minion对象:

Letter 含义 例子
G Grains glob匹配 G@os:Ubuntu
E PCRE Minion id匹配 E@web\d+.(dev qa prod).loc
P Grains PCRE匹配 P@os:(RedHat Fedora CentOS)
L minions列表 L@minion1.example.com,minion3.domain.com or bl*.domain.com
I Pillar glob匹配 I@pdata:foobar
S 子网/IP地址匹配 S@192.168.1.0/24 or S@192.168.1.100
R Range cluster匹配 R@%foo.bar
D Minion Data匹配 D@key:value

远程执行

salt '*' cmd.run 'hostname'

cmd.run用来原来执行命令,同样支持按照分组等规则匹配minion。

配置管理

saltstack的配置管理通过默认设置下的/srv/salt/top.sls开始,类似puppet的site.pp,数据格式是YAML,文件结构:
/srv/salt
|— service
| |— files
| | -- ntpd.conf | |-- init.sls | |-- ntp.sls— top.sls

配置文件简单介绍:

more /srv/salt/top.sls
base:
  '*':                            #匹配所有minion
    - base                        #执行base目录下的所有状态文件
    - _salt.states.minion         #执行_salt目录下的states目录下的                
                                    mininon.sls状态文件
  'idc':                          #idc组
    - match: nodegroup            #匹配模式-分组
    - service.ntp                 #执行service目录下的ntp.sls
    - service.ssh                #执行service目录下的ssh.sls

more /srv/salt/service/init.sls  #类似sls的索引文件
include:
  - iptables.sls
  - ntp.sls
  - ssh.sls

more /srv/salt/service/ntp.sls
ntp:
  pkg:                           #包管理
    - installed                  #ntp包必须安装

ntpd:
  service:                       #服务管理
    - running                    #保证运行
    - enable: True               #保证开机启动
    - watch:                     #观察服务与配置文件有变动重启服务
      - pkg: ntp            
      - file: /etc/ntpd.conf

/etc/ntpd.conf:
  file.managed:                  #文件管理
    - user: root                 #属主
    - group: root                #属组
    - mode: 644                  #权限
    - source: salt://service/files/ntpd.conf    #文件来源
    - require:                   #需要ntp包 
      - pkg: ntp

在服务端推送执行单个状态配置文件

salt '*' state.sls service.ntp

在推送执行全部状态配置文件

salt '*' state.highstate

如果客户端配置了schedul,可以让客户端自己定期同步并执行sls文件。

grains

初识grains

granins类似puppet中的factor,用来采集minion上的一些信息;minion端可以修改grains的内容。

查看grains可以采集到的minion端的所有信息项:
salt ‘*’ grains.ls
xxx.xxx.xxx.xxx:

    - biosreleasedate
    - biosversion
       - cpu_flags
    .
    .
    .
    - server_id
    - shell
    - virtual

查看grains能采集到的minion端详细信息:
salt ‘*’ grains.items
xxx.xxx.xxx.xxx:
biosreleasedate: 05/10/2012
biosversion: 1.2.6
cpu_flags: fpu vme de …
.
.
.
server_id: 377745509
shell: bin/bash
virtual: physical

查看指定项:

salt '*' grains.item osrelease
xxx.xxx.xxx.xxx:
    osrelease: 6.5

自定义grains

未完待续