salt stack 远程命令
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
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还支持对
等模块的支持。
参考文档:
http://docs.saltstack.com/en/latest/topics/tutorials/walkthrough.html
salt stack 远程命令的更多相关文章
- salt stack 工具之一——远程命令
salt stack 远程命令 salt stack是一种自动化的运维工具,可以同时对N台服务器进行配置管理.远程命令执行等操作. salt stack分为两个部分: salt-master,部署在控 ...
- Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET
OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...
- 七天学会 SALT STACK 自动化运维 (1)
七天学会 SALT STACK 自动化运维 (1) 简单理解 SALTSTACK 安装与配置 基本的使用方法 结束语 引用资源 简单理解 SALT STACK 笔者是初次接触 自动化运维 这一技术领域 ...
- Cisco Smart Install远程命令执行漏洞
0x01前言 在Smart Install Client代码中发现了基于堆栈的缓冲区溢出漏洞,该漏洞攻击者无需身份验证登录即可远程执行任意代码.cisco Smart Install是一种“即插即用” ...
- saltstack执行远程命令
目录 Remote Execution salt state salt state 系统 salt state 系统流程 Runner salt runner Orchestrate Runner S ...
- 【漏洞预警】SaltStack远程命令执行漏洞 /tmp/salt-minions
前言: 2020年5月3日,阿里云应急响应中心监测到近日国外某安全团队披露了SaltStack存在认证绕过致命令执行漏洞以及目录遍历漏洞.在多个微信群和QQ群已经有群友反映中招,请马上修复. 以下 ...
- salt stack安装与使用
SaltStack除了传统的C/S架构外,其实还有Masterless架构,如果采用Masterless架构,我不需要单独安装一台SaltStack Master机器,只需要在每台机器上安装Minio ...
- salt stack学习笔记
saltstack运行模式: local master/minion salt ssh saltstack三大功能 远程执行命令 配置管理(状态管理) 云管理 安装: master salt-mas ...
- "Java 反序列化"过程远程命令执行漏洞
一.漏洞描述 国外 FoxGlove 安全研究团队于2015年11月06日在其博客上公开了一篇关于常见 Java 应用如何利用反序列化操作进行远程命令执行的文章.原博文所提到的 Java 应用都使 ...
随机推荐
- Mysql版本java问题(com.mysql.cj.jdbc.Driver和com.mysql.jdbc.Driver)
老版本com.mysql.jdbc.Driver已弃用 String url1 = "jabc:mysql://127.0.0.1:3306/test"; String url1 ...
- [13]Windows 内核情景分析 --- 网络通信
典型的基于tcpip协议套接字方式的网络通信模块层次: 应用程序 socket api WS2_32.dll socket irp Afd.sys tdi irp Tcpip.sys 回调函数接口 各 ...
- sitecore系列教程之更改您的个人设置
在Sitecore控制面板中,您可以设置个人设置,例如密码或区域和语言选项,以使应用程序满足您的需求. 要更改您的个人设置: 在Sitecore Launchpad上,单击“ 控制面板”. 在“控制面 ...
- crm
CRM 开发 需求分析 存储所有的客户咨询信息 避免重复数据 客户的多次跟踪记录 客户来源.成单率分析 每个销售只能修改自己的客户信息 报名流程开发 班级管理 学员成绩,出勤管理 问卷调查 校区管理 ...
- 【转】Kylin系列-使用Saiku+Kylin构建多维分析OLAP平台
关于Kylin的介绍和使用请参考之前的文章 <分布式大数据多维分析(OLAP)引擎Apache Kylin安装配置及使用示例> Kylin对外提供的是SQL查询接口,基于Kylin构建OL ...
- flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)
flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...
- Spring整合Shiro
apache shiro 是一个安全认证框架,和 spring security 相比,在于他使用了比较简洁易懂的 认证和授权方式.其提供的 native-session(即把用户认证后的授权信息保存 ...
- react系列笔记1 用npx npm命令创建react app
react系列笔记1 用npx npm命令创建react app create-react-app my-app是开始构建新的 React 单页应用程序的最佳方式.它已经为你设置好了开发环境,以便您可 ...
- 那些年 Qzone
那些年转在Qzone里的: 不喊痛,不一定没感觉.不要求,不一定没期待.不落泪,不一定没伤痕.不说话,不一定没心声.沉默,不代表自己没话说.离开,不代表自己很潇洒.快乐,不代表自己没伤心.幸福,不代表 ...
- 自学java第六周的总结
在这个星期里,我主要将以前看过的复习了一遍,并且阅读并做了相关的题. 下个星期继续努力.