saltstack使用指南:远程管理minion
程序员文章站
2023-12-30 14:49:46
...
通过saltstack远程管理minion
1.远程执行命令的组成结构
2.如何使用多种方法定位和匹配minion服务器
一、远程执行命令的组成结构
[[email protected] ~]# salt --help
Usage: salt [options] '<target>' <function> [arguments]
第一部分:salt命令本身
第二部分:命令行选项
第三部分:目标定位字符串
第四部分:salt模块函数
第五部分:远程执行函数的参数
* :代表任意字符串,也可以是空字符串
?:代表一个字符,但是不可以为空
[] :字符集合,例如[a-z]代表任何一个小写字母,[0-9]代表数字
1.1 命令行选项
salt命令行选项的作用:通过不同的选项来改变程序本身的行为。
实例一:
[[email protected] ~]# salt -v '*' cmd.run 'free -m'
Executing job with jid 20180516144835766360
-------------------------------------------
izwz9f8xrvty50quc2gq50z:
total used free shared buff/cache available
Mem: 1839 97 609 0 1132 1574
Swap: 0 0 0
iZbp150ikdomqe3b32qaubZ:
total used free shared buff/cache available
Mem: 1839 106 603 0 1128 1564
Swap: 0 0 0
注:-v或--verbose:开启命令的详细描述---详细描述命令运行后会发生什么。
实例二:
[[email protected] ~]# salt --summary '*' cmd.run 'free -m'
izwz9f8xrvty50quc2gq50z:
total used free shared buff/cache available
Mem: 1839 97 609 0 1132 1574
Swap: 0 0 0
iZbp150ikdomqe3b32qaubZ:
total used free shared buff/cache available
Mem: 1839 106 603 0 1128 1564
Swap: 0 0 0
-------------------------------------------
Summary
-------------------------------------------
# of Minions Targeted: 2
# of Minions Returned: 2
# of Minions Did Not Return: 0
-------------------------------------------
注:--summary:显示一条salt命令的概要。
实例三:
[[email protected] ~]# salt --out=json '*' cmd.run 'free -m'
{
"izwz9f8xrvty50quc2gq50z": " total used free shared buff/cache available\nMem: 1839 97 609 0 1132 1574\nSwap: 0 0 0"
}
{
"iZbp150ikdomqe3b32qaubZ": " total used free shared buff/cache available\nMem: 1839 106 603 0 1128 1565\nSwap: 0 0 0"
}
注:--out:控制salt执行后输出结构的格式。
二、如何使用多种方法定位和匹配minion服务器
2.1 全局匹配
[[email protected] ~]# salt '*' test.ping
izwz9f8xrvty50quc2gq50z:
True
iZbp150ikdomqe3b32qaubZ:
True
2.2 正则匹配
后续会把正则规则总结出来,待后续补充......
注:salt使用python的re正则表达模块,可以解析正则表达式。
2.3 列表匹配
[[email protected] ~]# salt -L 'izwz9f8xrvty50quc2gq50z' test.ping
izwz9f8xrvty50quc2gq50z:
True
注:匹配多个主机,命令:salt -L 'izwz9f8xrvty50quc2gq50z,iZbp150ikdomqe3b32qaubZ' test.ping
2.4 minion端分组匹配
[[email protected] ~]# vim /etc/salt/master
nodegroups:
sa: '[email protected],10.0.10.101'
sb: '[email protected]/24'
进行分组操作:
salt -N sa test.ping
注:-N或--nodegroup表示分组匹配。
2.5 网段/IP匹配
网段匹配
[[email protected] ~]# salt -S '172.25.16.0/24' test.ping
172-25-16-223:
True
172-25-16-176:
True
172-25-16-126:
True
IP匹配
[[email protected] ~]# salt -S '172.25.16.171' test.ping
172-25-16-171:
True
注:-S表示网段IP匹配。
2.6 grains匹配
Grains可以认为是描述minion本身固有属性的静态数据。例如minion服务器的操作系统版本、系统大小、网卡的MAC地址等
测试全部匹配为centos系统的网络联通性
[[email protected] ~]# salt -G os:centos test.ping
172.25.34.20:
True
172.25.34.9:
True
172.25.34.19:
True
定位系统版本是6.5的主机
[[email protected] ~]# salt -G 'osrelease:6.5' test.ping
192-168-2-235:
True
192-168-2-67:
True
172-25-2-145:
True
定位网卡的物理地址的主机
[[email protected] ~]# salt -G 'hwaddr_interfaces:eth0:00:16:3e:08:1e:78' test.ping
izwz9f8xrvty50quc2gq50z:
True
查询所有的item
[[email protected] pillar]# salt '*' grains.items
省去一万行.....
查询minion端操作系统
[[email protected] pillar]# salt '*' grains.item os
izwz9f8xrvty50quc2gq50z:
----------
os:
CentOS
iZbp150ikdomqe3b32qaubZ:
----------
os:
CentOS
注:-G:表示grains匹配。
2.7 pillars匹配
后续不断完善中......
扩展:grains与pillar之间的区别?
1.grains数据通常是minion端的一些特性数据,比如操作系统类型,磁盘,内存信息等,它是存储在minion端的,缓存在master端。
2.pillar数据存储在master端,客户端有缓存。pillar数据可以通过salt '*' saltutil.refresh_pillar来刷新pillar数据。
3.grains和pillar都是以key value形式的数据库。
4.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改。