salt stack 远程命令

salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理、远程命令执行等操作。

salt stack分为两个部分

salt-master,部署在控制服务器上,用于发出运维指令;
salt-minion,部署在所有需要批量运维的线上服务器上;

salt安装

服务端:yum install salt-master -y
客户端:yum install salt-minion -y

配置文件

服务端:/etc/salt/master

服务端配置:

interface: 192.168.1.229
auto_accept: True

其中,interface 用于设置master监听的IP地址;

auto_accept设置是否自动接收minion的KEY。

master启动后默认监听4505和4506两个端口:4505(publish_port)为salt的消息发布系统;4506(ret_port)为salt客户端与服务端通信的端口。

客户端:/etc/salt/minion

客户端配置:

master: 192.168.1.229
id :34

其中,master设置服务端地址;

id用于设置minion自身的ID,master根据这个ID识别minion;

启动服务

服务端启动方式:service salt-master start
客户端启动方式:service salt-minion start

程序日志:(有问题可查日志获取出错信息)

服务端:/var/log/salt/master
客户端:/var/log/salt/minion

key管理

1、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master;
2、master 在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key, 然后master就能对minion发送指令了。

Salt在master和minion数据交换过程中使用AES加密, 为了保证发送给minion的指令不会被篡改,在发送命令到minion之前,minion的key需要先被master所接受(accepted),运行salt-key可以列出当前key的状态:

[root@localhost src]# salt-key -L
Accepted Keys:
34
35
37
39
56
57
Unaccepted Keys:
Rejected Keys:

salt-key命令可以接受特定的单个key或批量接受key,使用-A选项接受当前所有的key,接受单个key可以使用-a keyname。
认证命令为salt-key,常用的有如下命令

-a ACCEPT, --accept=ACCEPTAccept the following key
-A, --accept-all Accept all pending keys
-r REJECT, --reject=REJECTReject the specified public key
-R, --reject-all Reject all pending keys
-d DELETE, --delete=DELETEDelete the named key
-D, --delete-all Delete all keys

当然salt也是可以自动认证的,把下面的False改成True就OK了:

grep  -n "auto_accept:" /etc/salt/master

执行命令

salt 命令的格式

salt <target> <function> <args>

这里target是指minion的id,function是要执行的功能函数,args是函数参数。例如:

salt '*' cmd.run 'ls /home/'
salt '*' cmd.exec_code bash 'for i in {1,2};do echo $i;done'
salt '*' service.restart salt-minion

对所有的minion执行命令:

salt '*' cmd.run 'uptime'

输出结果:

34:
18:13:18 up 268 days, 6:04, 3 users, load average: 0.73, 0.87, 0.88
37:
18:13:18 up 142 days, 16:51, 1 user, load average: 0.47, 0.50, 0.46
39:
18:13:17 up 142 days, 16:49, 3 users, load average: 0.60, 0.59, 0.51
35:
18:13:17 up 268 days, 6:03, 1 user, load average: 1.11, 0.97, 0.87
57:
18:13:18 up 149 days, 2:30, 1 user, load average: 1.54, 1.62, 1.55
56:
18:13:17 up 149 days, 2:31, 0 users, load average: 1.50, 1.59, 1.51

-L选项指定minion列表:

salt -L '35,56' cmd.run 'uptime' 

-E选项使用正则匹配指定minion列表:

salt -E '^3' cmd.run 'uptime'

-N选项指定一个分组:

salt -N group2 test.ping

这里的test.ping命令和ICMP的ping没有关系。

注意:服务器分组需要事先在配置文件(/etc/salt/master)添加。

这里可以查看到salt支持的所有模块提供的功能列表:

salt '*' -d cmd

比如:

1、disk模块,查看磁盘使用率

salt '*' disk.usage
salt '*' disk.percent /var
salt '*' disk.inodeusage

2、dig模块

salt ns1 dig.A www.google.com
salt ns1 dig.AAAA www.google.com
salt ns1 dig.MX google.com
salt ns1 dig.NS google.com
salt ns1 dig.SPF google.com
salt ns1 dig.check_ip 127.0.0.1

3、pkg模块,用于批量安装minion服务器

salt '*' pkg.install <package name>
salt '*' pkg.upgrade 

注意:不同的linux发行版本,采用的包管理方式不一样,例如Ubuntu使用apt,CentOS使用yum等,因此该模块有不同的实现;

4、cron模块,管理集群的crontab

salt '*' cron.ls root
salt '*' cron.raw_cron root
salt '*' cron.rm_job root /usr/local/weekly
salt '*' cron.rm_env root MAILTO
salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' cron.write_cron_file root /tmp/new_cron

5、at模块,一次性任务

salt '*' at.at 12:05am '/sbin/reboot' tag=reboot
salt '*' at.at '3:05am +3 days' 'bin/myscript' tag=nightly runas=jim
salt '*' at.atq
salt '*' at.atrm all

6、service模块

salt '*' service.available sshd
salt '*' service.get_all
salt '*' service.reload <service name>
salt '*' service.restart <service name>
salt '*' service.start <service name>
salt '*' service.stop <service name>
salt '*' service.status <service name> [service signature]

7、cmd模块

salt '*' cmd.run "ls -l | awk '/foo/{print \$2}'"
salt '*' cmd.exec_code python2 'print("hello world")'
salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'

cmd模块可以执行一段代码、也可以执行一个指定脚本;

8、nginx模块,批量操作nginx服务器

salt '*' nginx.configtest
salt '*' nginx.signal reload
salt '*' nginx.status
salt '*' nginx.version

类似的,salt还支持对

apache

mysql

redis

rabbit

nagios

django

hadoop

haproxy

rsync

varnish

svn

等模块的支持。

 参考文档:

http://docs.saltstack.com/en/latest/topics/tutorials/walkthrough.html

salt stack 远程命令的更多相关文章

  1. salt stack 工具之一——远程命令

    salt stack 远程命令 salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理.远程命令执行等操作. salt stack分为两个部分: salt-master,部署在控 ...

  2. Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

    OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

  3. 七天学会 SALT STACK 自动化运维 (1)

    七天学会 SALT STACK 自动化运维 (1) 简单理解 SALTSTACK 安装与配置 基本的使用方法 结束语 引用资源 简单理解 SALT STACK 笔者是初次接触 自动化运维 这一技术领域 ...

  4. Cisco Smart Install远程命令执行漏洞

    0x01前言 在Smart Install Client代码中发现了基于堆栈的缓冲区溢出漏洞,该漏洞攻击者无需身份验证登录即可远程执行任意代码.cisco Smart Install是一种“即插即用” ...

  5. saltstack执行远程命令

    目录 Remote Execution salt state salt state 系统 salt state 系统流程 Runner salt runner Orchestrate Runner S ...

  6. 【漏洞预警】SaltStack远程命令执行漏洞 /tmp/salt-minions

    前言:   2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在认证绕过致命令执行漏洞以及目录遍历漏洞.在多个微信群和QQ群已经有群友反映中招,请马上修复. 以下 ...

  7. salt stack安装与使用

    SaltStack除了传统的C/S架构外,其实还有Masterless架构,如果采用Masterless架构,我不需要单独安装一台SaltStack Master机器,只需要在每台机器上安装Minio ...

  8. salt stack学习笔记

    saltstack运行模式: local master/minion salt ssh saltstack三大功能 远程执行命令 配置管理(状态管理) 云管理 安装: master  salt-mas ...

  9. "Java 反序列化"过程远程命令执行漏洞

    一.漏洞描述   国外 FoxGlove 安全研究团队于2015年11月06日在其博客上公开了一篇关于常见 Java 应用如何利用反序列化操作进行远程命令执行的文章.原博文所提到的 Java 应用都使 ...

随机推荐

  1. sql server case

    use mytest go exec p_city 2,4 exec p_city_cnt 2,3 select stuff((select ',' + city_id from cities for ...

  2. [10]Windows内核情景分析---中断处理

    中断处理 每个cpu有一张中断表,简称IDT. IDT的整体布局:[异常->空白->5系->硬](推荐采用7字口诀的方式重点记忆) 异常:前20个表项存放着各个异常的描述符(IDT表 ...

  3. html5-字体css

    #div1{font-size: 50px;}#div2{font-size: 50%;}#div3{font-size: 300%}#div4{font-size: 3em;}#div5{font- ...

  4. sql privot 实现行转列

    表结构如下: RefID    HRMS    Name    InsuranceMoney    InsuranceNamefb2bdee8-e4c9-4470-8e7f-14550d3212f7  ...

  5. SoapUI link

    1.      Groovy language: http://docs.groovy-lang.org/latest/html/documentation/index.html http://doc ...

  6. python type的用法

    目录 描述 语法 用法 type和isinstance Type和Object 描述 python的 type 函数有两个用法,当只有一个参数的时候,返回对象的类型.当有三个参数的时候返回一个类对象. ...

  7. 微信小程序制作家庭记账本之四

    第四天,仍然对记账本代码进行研究,对按钮的大小设置,颜色,具体位置进行分析,但其中很多代码都不明白.

  8. nextjs 服务端渲染请求参数

    Post.getInitialProps = async function (context) { const { id } = context.query const res = await fet ...

  9. Talented Chef ZOJ - 3778

    As we all know, Coach Gao is a talented chef, because he is able to cook M dishes in the same time. ...

  10. ES6知识整理(8)--Promise对象

    (关于promise,以前并不知道是什么,没这个概念.现在来学习总结下) promise含义 es6的异步编程解决方案.需要new新对象操作api. promise对象特点 有3中状态:pending ...