学习saltstack (四)

一、.利用SaltStack执行远程命令.

 SaltStack的一个比较突出的优势是具备执行远程命令的功能,操作及方法与func相似,可以帮助运维人员完成集中化的操作平台。

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

示例:查看被控主机的内存使用情况.如下.

?
1
2
3
4
5
6
7
8
[root@locaohost~]# salt 'SN100-128' cmd.run "free -m"
SN100-128:
                  total       used       free     shared    buffers     cached
     Mem:          8001       6230       1770          0        222       2057
     -/+ buffers/cache:       3950       4051
     Swap:         5119          0       5119
 
#查看SN100-128主机内存使用情况. 

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

1.) -E,--pcre,通过正则表达式进行匹配。示例:查询SN100-字符开头的主机id名是否连通,命令: salt -E '^SN100-*' test.ping,运行结果如下.

?
1
2
3
4
5
6
7
8
9
[root@localhost ~]# salt -E '^SN100-*' test.ping
SN100-128:
     True
SN100-129:
     True
SN100-130:
     True
 
#正则匹配主机的连通性.

2.) -L, --list,以主机id名列表的形式进行过滤,格式与python的列表相似,即不同主机id名称使用逗号分隔。示例:获取主机id名为SN100-128,SN100-129;获取完整操作系统发行版名称,命令:salt -L 'SN100-128,SN100-129' grains.item osfullname,如下:

?
1
2
3
4
5
6
7
8
9
10
11
[root@localhost~]# salt -L 'SN100-128,SN100-129' grains.item osfullname
SN100-128:
     ----------
     osfullname:
         CentOS
SN100-129:
     ----------
     osfullname:
         CentOS
 
#列表形式匹配主机的操作系统类型

3.)-G --grain,根据被控主机的grains信息进行匹配过滤,格式为'<grain value>:<glob expression>',例如,过滤内核为Linux的主机可以写成'kernel:Linux',如果同时需要正则表达式的支持可切换成--grain-pcre参数来执行。示例:获取主机发行版本号为6.4的python版本号,命令:salt -G 'osrelease:6.4' cmd.run 'python -V',运行结果如下。

?
1
2
3
4
5
6
7
8
9
[root@localhost ~]# salt -G 'osrelease:6.4' cmd.run 'python -V'
SN100-128:
     Python 2.6.6
SN100-129:
     Python 2.6.6
SN100-130:
     Python 2.6.6
 
#grain形式匹配主机的python版本

匹配操作系统发行版本为CentOS的被控端可以通过-G参数来过滤。

?
1
2
3
4
5
6
7
8
9
[root@localhost~]# salt -G 'os:CentOS' test.ping
SN100-130:
     True
SN100-128:
     True
SN100-129:
     True
 
#返回True,则表示都是CentOS系统 

4) -I --pillar,根据被控主机的pillar信息进行匹配过滤,格式为"对象名称:对象值",例如,过滤所有具备'apache:httpd' pillar值的主机。示例:探测具有'nginx:root:/data' 信息的主机连通性,命令:salt -I 'nginx:root:/data' test.ping ,运行结果如下。

?
1
2
3
4
5
6
7
8
9
[root@localhost~]# salt -I 'nginx:root:/data' test.ping
SN100-128:
     True
SN100-129:
     True
SN100-130:
     True
 
#pillar形式匹配主机的连通性

其中pillar属性配置文件如下:

?
1
2
nginx:
        root: /data

5.) -N --nodegroup,根据主控端master配置文件中的分组名称进行过滤,(主机信息支持正则表达式、grain、条件运算符等),通常根据业务类型划分,不同业务具备相同的特点,包括部署环境、应用平台、配置文件等。举例分组配置信息如下:

【/etc/salt/master】

nodegroups:
   group1: 'L@SN100-128,SN100-129,SN100-130'
   group2: 'L@SN200-131'

其中,L@表示后面的主机id格式为列表,即主机id以逗号分隔;G@表示已grain格式描述;S@表示已IP子网或地址格式描述。

      示例:探测group2被控主机的连通性,其命令为:salt -N group2 test.ping .

6.) -C --compound,根据条件运算符not、and、or去匹配不同规则的主机信息。示例:探测SN100开头并且操作系统版本为CentOS的主机连通性,命令如下:

?
1
salt -C 'E@^SN100-* and G@os:Centos' test.ping 

其中,not语句不能作为第一个条件执行,不过可以通过以下方法来规避,示例:探测非SN100开头的主机连通性,其命令为:salt -C '* and not E@^SN100-*' test.ping。

7) -S --ipcidr,根据被控主机的IP地址或IP子网进行匹配,示例如下:

?
1
2
salt -S 192.168.0.0/16 test.ping
salt -S 192.168.1.10 test.ping

salt-run命令:

判断minion端是否连接到master端

?
1
2
3
4
5
6
语法:salt-run [options] [runner.func]
 
salt-run manage.status         #查看所有minion状态
salt-run manage.down           #查看所有没在线minion
salt-run manged.up             #查看所有在线minion
salt-run manage.versions       #查看版本

Salt job id管理

?
1
2
3
4
5
salt '*' test.ping -v
 
salt '*' saltutl.running  #显示minion当前正在运行的job
 
salt '*' saltutl.kill_job jid   #强制退出远程执行的job进程.

一、ZeroMQ描述

  我们进行自动化运维大多数情况下,是我们的服务器数量已经远远超过人工SSH维护的范围,SaltStack可以支数以千计,甚至更多的服务器,这些性能的提供主要来自于ZeroMQ,因为SaltStack地城是基于ZeroMQ进行高效的网络通信,ZMQ用于node与node间的通信,node可以是主机也可以可以是进程。

二、ZeroMQ简介

        ZeroMQ(我们通常还会OMQ,Zmq等来表示)是一个简单好用的传输层,像框架一样的一个套接字库,他使用的socket编程更加简单、简洁和性能更高,它还是一个消息处理队列库,可在多个线程、内核和主机核之间弹性伸缩。

  发布与订阅

            ZeroMQ支持Publish/Subscribe,即发布与订阅模式,我们经常简称Pub/Sub
            如图:
            
            Salt Master运行两个网络服务,其中一个是ZeroMQ Pub系统,默认监听4505端口,可以通过修改/etc/salt/master配置文件的publish_port参数设置,它是salt的消息发布系统,如果查看4505端口,会发现所有Minion连接到Master的4505端口,TCP状态持续保持为ESTABLISHED

            [root@salt-client ~]# lsof -i :4505
            COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
            salt-mini 2630 root   24u  IPv4  41122      0t0  TCP 172.16.17.12:41314->salt:4505 (ESTABLISHED)
            这样Salt Master发布一个消息,所有连接到4505这个Pub端口上的Minion都会接受到这个消息,然后每个Minion会再判断自己是否需要执行这个消息。        

  请求与响应

            ZeroMQ支持Request-Reply,即请求与响应模式,我们经常简称REQ/REP
            如图:
            
            Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口,可以通过修改/etc/salt/master配置文件的ret_port参数设置,他是salt客户端与服务端通信的端口,比如说Minion执行某个命令后的返回值就是发送Master的4506这个REP端口。
            由于我们在最初安装了python-setproctitle软件包,所以我们可以直接看到Salt Master启动的进程的名称。     

 [root@ops-node1 ~]# ps aux | grep salt
            /usr/bin/salt-master -d ProcessManager  #中心进程管理器
            /usr/bin/salt-master -d _clear_old_jobs  #清除旧的Jobs文件及更新fileserver
            /usr/bin/salt-master -d Publisher       #将任务PUB到Minion端
            /usr/bin/salt-master -d EventPublisher  #Event Publisher进程
            /usr/bin/salt-master -d ReqServer_ProcessManager #ReqServer进程管理器
            /usr/bin/salt-master -d MWorker  #工作进程
            /usr/bin/salt-master -d MWorker  #工作进程
            /usr/bin/salt-master -d MWorker  #工作进程
            /usr/bin/salt-master -d MWorker  #工作进程
            /usr/bin/salt-master -d MWorker  #工作进程
            /usr/bin/salt-master -d MWorkerQueue #将Ret接口(ROUTER)数据转发到Worker(DEALER)

转载于:https://www.cnblogs.com/wuhg/p/9970280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值