saltstack(三):SaltStack远程执行
saltstack(三):SaltStack远程执行
1.1 saltStack远程执行—SaltStack基本语法和操作
salt <clients> module.method 'cmd'
例: 在所有客户端上执行uptime命令
salt命令
--version 查看 SaltStack 程序的版本号
--versions-report 查看 SaltStack 程序以及依赖包的版本号
-h, --help 查看帮助信息
-c CONFIG_DIR, --config-dir=CONFIG_DIR 指定配置文件目录
-t TIMEOUT, --timeout=TIMEOUT 指定 Timeout 时间 ( 默认是 5s)
--hard-crash 捕捉到 original 异常不退出 ( 默认关闭
-s, --static 以组的形式返回所有 Minion 的数据
--async 异步执行
-v, --verbose verbose 模式
--show-timeout 显示 minion timeout 状态
--show-jid 显示任务 jid
-b BATCH, --batch=BATCH 按照百分比执行任务
-a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH
指定外部认证方式
-T, --make-token 生成 Master token
--return=RETURNER 指定 SaltStack return
-d, --doc 查看指定模块或者所有模块文档
--args-separator=ARGS_SEPARATOR 设置多个传参直接分隔符
--summary 显示汇总信息
--username=USERNAME 指定外部认证用户名
--password=PASSWORD 指定外部认证密码
Target Options:
-E, --pcre 正则匹配
-L, --list 列表匹配
-G, --grain grains 匹配
--grain-pcre grains 加正则匹配
-N, --nodegroup 组匹配
-R, --range 范围匹配
-C, --compound 综合匹配 ( 指定多个匹配 )
-I, --pillar pillar 值匹配
salt minion配置常用选项说明
master:指定master主机(默认salt)
master_port:指定认证和执行结果发送到master的哪个端口,与master配置文件中的ret_port对应,默认为4506
id:指定minion的表示,salt内部使用id作为表示(默认为主机名)
user:指定运行minion的用户,推荐使用root(默认root)
cache_job:minion是否缓存执行结果(默认false)
backup_mode:在文件操作(file.managed或file.recurse)时,如果文件发送改变,指定备份目标,备份在cachedir/file_backups目录下,以原始文件名+时间戳命名(默认disable)
providers:指定模块对应的providers
renderer:指定配置管理系统中的渲染器(默认yaml_jinja)
file_client:指定file client默认去哪里寻找文件(默认remote)
loglevel:指定日志级别(默认为warning)
tcp_keepalive:minion是否与master报错keepalive检查,zeromq3以下版本存在bug,建议升级到3以上版本(默认为true)
1.2 saltstack远程执行—选择目标
1.2.1 和minion_ID相关的
指定具体的minion ID
salt 'pe-db' test.ping
通配符
salt '*' test.ping salt 'linux-node2*' test.ping salt 'linux-node[1|2].example.com' test.ping salt 'linux-node[1-2].example.com' test.ping salt 'linux-node[!2].example.com' test.ping salt 'linux-node?.example.com' test.ping
列表
salt -L 'linux-node1.example.com,linux-node2.example.com' test.ping
正则表达式
salt -E 'linux-(node1|node2)*' test.ping salt -E 'linux-(node1|node2).example.com' test.ping
salt -E 'web1-(prod|devel)' test.ping #top.sls base: 'web1-(prod|devel)': - match: pcre - webserver
备注: 所有匹配目标的方式,都可以用到top file里面来指定目标。
minion ID设置方案:IP地址、根据业务来进行设置
#例: redis-node1-redis04-idc04-h5web.example.com redis-node1 # redis第一个节点 redis04 # 集群 idc04 # 机房 h5web # 业务线
1.2.2 和minion_ID无关的
IP地址、子网
salt -S 192.168.137.12 test.ping salt -S 192.168.137.0/24 test.ping
分组
需要配置master文件,重启systemctl restart salt-master
vim /etc/salt/master
编辑master主配置文件添加分组
letter |
含义 |
例子 |
G |
Grains glob匹配 |
|
E |
PCRE正则匹配minion_id |
|
P |
PCRE正则匹配Grains |
|
L |
minion_id列表 |
|
I |
pillar glob匹配 |
|
S |
子网/ip地址匹配 |
|
R |
Range cluster匹配 |
|
D |
minion data匹配,需要定义data |
|
N |
组+组匹配 |
批处理
可用于重启所有主机或进程场景,百分比或固定数量的一点一点重启主机或进程
salt '*' -b 10 test.version #一次10台 salt -G 'os:RedHat' --batch-size 25% apache.signal restart #一次处理25%
1.3 saltstack远程执行—执行模块
官网文档 https://docs.saltstack.com/en/latest/ref/modules/all/index.html#all-salt-modules
列出salt所有模块,以及如何使用的帮助文档
通过yum默认安装salt所有模块存放路径 /usr/lib/python2.7/site-packages/salt/modules(centos 7)
salt '*' network.active_tcp # 列出所有主机运行的tcp连接 salt '*' network.arp # 列出所有主机arp salt '*' service.available sshd # 列出所有主机sshd salt '*' service.get_all # 列出所有主机的所有运行服务 salt '*' service.status sshd # 列出所有主机sshd运行状态 salt-cp '*' /etc/hosts /tmp/test # 将master上/etc/hosts文件拷贝到所有主机的/tmp/test salt '*' state.show_top # 查看top salt '*' state.single pkg.installed name=lsof # 所有主机安装lsof
1.4 saltstack远程执行—执行返回
查看saltstack(十二):saltstack输出处理—Saltstack job cache(写入数据库)