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匹配

G@os:Centos

E

PCRE正则匹配minion_id

E@web\d+\.(dev|qa|prod)\.loc

P

PCRE正则匹配Grains

P@os:(RedHat|Centos)

L

minion_id列表

L@vas01,vas02,vas03

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匹配,需要定义data

D@key:value

N

组+组匹配

N@group1 or N@group2

 

 

批处理

可用于重启所有主机或进程场景,百分比或固定数量的一点一点重启主机或进程

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(写入数据库)

 

posted on 2019-05-31 09:51  光阴8023  阅读(580)  评论(0编辑  收藏  举报