前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 Saltstack 远程执行命令

利用 Saltstack 远程执行命令

原创
作者头像
conanma
修改2021-08-31 11:17:53
1.1K0
修改2021-08-31 11:17:53
举报
文章被收录于专栏:正则正则

一、利用 Saltstack 远程执行命令

Saltstack的一个比较突出优势就是具备执行远程命令的功能。

操作方法与func(fedorahosted.org/func/) 相似,可以帮助运维人员完成集中化的操作平台。

docs.saltstack.cn/topics/targ…

命令格式:salt '<操作目标>' <方法> [参数]

1.1 查看被控制机的内存使用情况
代码语言:javascript
复制
[root@saltstack-master master]# salt 'saltstack_web1group_1' cmd.run 'free -m'
saltstack_web1group_1:
                 total       used       free     shared    buffers     cached
    Mem:           230        223          6          0         15         55
    -/+ buffers/cache:        153         77
    Swap:         2083        222       1861
复制代码

其中针对<操作目标>,saltstack提供了多种方法对被控制端(id)进行过滤。下面列举常用的具体参数;

1.2 查看被控制端 saltstack 字符开头的主机id名是否连通
  • -E:--pcre:通过正则表达式进行匹配。
代码语言:javascript
复制
[root@saltstack-master master]# salt -E '^saltstack.*' test.ping
saltstack_web1group_1:
    True
saltstack_web1group_2:
    True
复制代码
1.3 获取主机 id 名为 saltstack_web1group_1和saltstack_web1group_2 获取完整操作系统发行版名称
  • -L:--list 以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分隔。
代码语言:javascript
复制
[root@saltstack-master master]# salt -L 'saltstack_web1group_1,saltstack_web1group_2' grains.item osfullname
saltstack_web1group_1:
    ----------
    osfullname:
        CentOS
saltstack_web1group_2:
    ----------
    osfullname:
        CentOS
复制代码
1.4 获取主机发行版本为 6.5 的 Python 版本号
  • -G:--grain 根据被控主机的grains信息(grains是saltstack重要组件之一,重要作用是收集被控主机的基本系统信息)进行匹配过滤,格式为':'。

比如过滤内核为Linux的主机可以写成'kernel:Linux',如果同时需要正则表达式的支持可以切成--grain-pcre参数来执行。

代码语言:javascript
复制
[root@saltstack-master ~]# salt -G 'osrelease:6.5' cmd.run 'python -V'
saltstack_web1group_1:
    Python 2.6.6
saltstack_web1group_2:
    Python 2.6.6
复制代码
1.5 过滤所有具备 'apache:httpd' pillar 值的主机
  • -I:--pillar 根据被控主机的pillar(作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用)信息进行过滤匹配,格式为'对象名称:对象值'。

探测具有"httpd:root:/data"信息的主机连通性。

代码语言:javascript
复制
[root@saltstack-master ~]# salt -I 'httpd:root:/data' test.ping
saltstack_web1group_1:
    True
saltstack_web1group_2:
    True
其中pillar属性配置文件如下:
httpd:
root: /data
复制代码
1.6 探测 web1group(或web2group)被控主机的连通性
  • -N:--nodegroup 根据主控端master配置文件中的分组名称进行过滤。

如下配置的组信息(主机信息支持正则表达式、grain、条件运算符等),通常根据业务类型划分,不同业务具备相同的特点,包括部署环境、应用平台、配置文件等。

L@:表示后面的主机id格式为列表,即主机id以逗号隔开; G@:表示以grain格式描述; S@:表示以ip子网或地址格式描述;

代码语言:javascript
复制
[root@saltstack-master salt]# vim /etc/salt/master
nodegroups:
  web1group: 'L@saltstack_web1group_1,saltstack_web1group_2'
[root@saltstack-master salt]# salt -N web1group test.ping
saltstack_web1group_2:
    True
saltstack_web1group_1:
    True
复制代码
1.7 探测 salt 开头并且操作系统为 Centos 的主机连通性
  • -C:--compound 根据条件运算符not、and、or去匹配不同规则的主机信息。
代码语言:javascript
复制
[root@saltstack-master salt]# salt -C 'E@^salt.* and G@os:Centos' test.ping
saltstack_web1group_1:
    True
saltstack_web1group_2:
    True
复制代码
1.8 探测非 saltstack 开头的主机连通性

not语句不能作为第一个条件执行,不过可以通过以下方法来规避:

代码语言:javascript
复制
[root@saltstack-master salt]# salt -C '* and not E@^Jenkins.*' test.ping
saltstack_web1group_2:
    True
saltstack_web1group_1:
    True
复制代码
1.9 查看是否匹配当前从设备是否处于 192.168.0.0/16 的网段
  • -S:--ipcidr 根据被控主机的ip地址或ip子网进行匹配
代码语言:javascript
复制
[root@saltstack-master salt]# salt -S 192.168.0.0/16 test.ping
saltstack_web1group_1:
    True
saltstack_web1group_2:
    True
复制代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、利用 Saltstack 远程执行命令
    • 1.1 查看被控制机的内存使用情况
      • 1.2 查看被控制端 saltstack 字符开头的主机id名是否连通
        • 1.3 获取主机 id 名为 saltstack_web1group_1和saltstack_web1group_2 获取完整操作系统发行版名称
          • 1.4 获取主机发行版本为 6.5 的 Python 版本号
            • 1.5 过滤所有具备 'apache:httpd' pillar 值的主机
              • 1.6 探测 web1group(或web2group)被控主机的连通性
                • 1.7 探测 salt 开头并且操作系统为 Centos 的主机连通性
                  • 1.8 探测非 saltstack 开头的主机连通性
                    • 1.9 查看是否匹配当前从设备是否处于 192.168.0.0/16 的网段
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档