欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,无权修改。
相关标签: saltstack匹配

上一篇:

下一篇: