http://www.cnblogs.com/caoxiaojian/p/5084494.html
doc
https://docs.saltstack.com/en/latest/
目录
远程执行
Returners
配置管理
远程执行
目标(Targeting)
模块(Module)
返回(Returnners)
Targeting目标
1、Globbing and regex
匹配minions 通过通配符和正则表达式,与minion ID有关系。
链接:使用通配符和正则表达式来匹配
2、Grains
用来匹配minion的grains,是指那些关于minion主机的静态信息,比如OS,软件版本,虚拟化,CPU,内存等等。
链接:使用Grains来匹配
3、Pillar
通过用户定义的变量匹配minion主机
链接:使用Pillar来匹配
4、Subnet/IP Address
通过子网或IP地址匹配minion主机(当前仅支持IPV4)。
链接:通过IP/subnet来匹配
5、Compound matching
把上面的全部匹配器组合为一个表达式。
链接:使用组合集合匹配
6、Node groups
在master配置文件中静态定义minion组,使用:ref:复合 <targeting-compound> 匹配语法。
链接:使用节点组匹配
7、Batching execution
一些命令集在匹配上的minions时只需要执行一次。
链接:只要执行一次的内容
Modules模块
用户权限的限制
# 设置用户名:larry,和可以执行的命令
[root@linux-node1 ~]# vim /etc/salt/master
245 client_acl:
246 larry:
247 - test.ping
248 - network.*
Returners
Salt返回接收器(returner)允许把minion的响应保存在各种数据存储或不同的位置,甚至把响应内容显示在命令行
Returner可以用来扩展Salt,和新的、定制的接口和支持新的数据库进行通信。
vim /etc/salt/master
#return: mysql
master_job_cache: mysql
mysql.host: '10.0.0.7'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
此种方式是主动去Minion端获取,推荐使用。
如果不加job_cache,开启上面的return,就是被动接收。需要客户端也要修改配置文件,添加同样的内容。
检查是否生效
/etc/init.d/salt-master restart
salt '*' saltutil.refresh_pillar
[root@linux-node1 ~]# /etc/init.d/salt-master restart
[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar
linux-node1.example.com:
True
linux-node2.example.com:
True
[root@linux-node1 ~]# salt '*' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
# 数据库中检查有么有获取到数据(主动去minion端获取)
mysql> use salt;
mysql> select * from salt_returns;
配置管理
[root@linux-node1 ~]# vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
test:
- /srv/salt/test
prod:
- /srv/salt/prod
# 执行方式一
# 执行状态(单独执行某个状态)
[root@linux-node1 files]# salt '*' state.sls dns
# 到minion端查看
[root@linux-node2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
#########
# 执行方式二
# 如果想使用高级状态执行,需要在top.sls中写明
[root@linux-node1 files]# vim /srv/salt/base/top.sls
base:
'*':
- dns
# 执行高级状态,从top.sls中读取,在执行
[root@linux-node1 files]# salt '*' state.highstate
jinja模版
jinja模版的创建
# jinja模版
# 有- template: 就代表这个文件就是一个模版文件
# - defaults: 是变量列表
[root@linux-node1 base]# vim dns.sls
/etc/resolv.conf:
file.managed:
- source: salt://files/resolv.conf
- user: root
- group: root
- mode: 644
- template: jinja
- defaults:
DNS_SERVER: 10.0.0.2
jinja模版的使用
# 模板文件里面变量使用方式` DNS_SERVER `
[root@linux-node1 base]# vim /srv/salt/base/files/resolv.conf
# Generated by NetworkManager
# nameserver 10.0.0.2
nameserver ` DNS_SERVER `
# 执行高级状态
[root@linux-node1 base]# salt '*' state.highstate
# minion端查看,nameserver 自动将变量代换
[root@linux-node2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
# nameserver 10.0.0.2
nameserver 10.0.0.2
jinja模版中使用Grains
# 使用grains
[root@linux-node1 base]# cat /srv/salt/base/files/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
# {{ grains['fqdn_ip4'] }}
# minion端查看
[root@linux-node2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.0.2
# ['10.0.0.8']
还可以在jinja模版中使用执行模块和Pillar