saltstack 基本操作
一、常用操作
①、模块查看
#查看全部模块
[root@k8s_master ~]# salt '*' sys.list_modules # "*"为所有node节点 (此处可以写通过salt-key -L 命令获取的node节点的名称)
k8s_master:
- acl
- aliases
- alternatives
- archive

查看模块对应的api
salt k8s_master sys.list_state_functions
[root@k8s_master ~]# salt k8s_master sys.list_state_functions pkg ##查看pkg对应的api
k8s_master:
- pkg.installed
- pkg.latest
- pkg.mod_aggregate
- pkg.mod_init
- pkg.purged
- pkg.removed
- pkg.uptodate
[root@k8s_master ~]# salt k8s_master sys.list_state_functions cmd ##查看cmd模块对应的api
k8s_master:
- cmd.call
- cmd.mod_run_check
- cmd.mod_watch
- cmd.run
- cmd.script
- cmd.wait
- cmd.wait_call
- cmd.wait_script
- cmd.watch

②、模块使用
查看模块使用说明
salt '*' sys.doc 模块名称(模块api) ## state.apply/cmd.run/...
实例说明:
[root@k8s_master ~]# salt k8s_master sys.doc cmd.run
'cmd.run:' Execute the passed command and return the output as a string Note that ``env`` represents the environment variables for the command, and
should be formatted as a dict, or a YAML string which resolves to a dict. Warning: This function does not process commands through a shell
unless the python_shell flag is set to True. This means that any
shell-specific functionality such as 'echo' or the use of pipes,
redirection or &&, should either be migrated to cmd.shell or
have the python_shell=True flag set here. The use of python_shell=True means that the shell will accept _any_ input
including potentially malicious commands such as 'good_command;rm -rf /'.
Be absolutely certain that you have sanitized your input prior to using
python_shell=True CLI Example: salt '*' cmd.run "ls -l | awk '/foo/{print \$2}'" The template arg can be set to 'jinja' or another supported template
engine to render the command arguments before execution.
For example: salt '*' cmd.run template=jinja "ls -l /tmp/{{grains.id}} | awk '/foo/{print \$2}'" Specify an alternate shell with the shell parameter: salt '*' cmd.run "Get-ChildItem C:\ " shell='powershell' A string of standard input can be specified for the command to be run using
the ``stdin`` parameter. This can be useful in cases where sensitive
information must be read from standard input.: salt '*' cmd.run "grep f" stdin='one\ntwo\nthree\nfour\nfive\n' If an equal sign (``=``) appears in an argument to a Salt command it is
interpreted as a keyword argument in the format ``key=val``. That
processing can be bypassed in order to pass an equal sign through to the
remote shell command by manually specifying the kwarg: salt '*' cmd.run cmd='sed -e s/=/:/g'

查看帮助文档都有那些方法(api):
[root@k8s_master ~]# salt k8s_master sys.list_functions sys
k8s_master:
- sys.argspec
- sys.doc
- sys.list_functions
- sys.list_modules
- sys.list_renderers
- sys.list_returner_functions
- sys.list_returners
- sys.list_runner_functions
- sys.list_runners
- sys.list_state_functions
- sys.list_state_modules
- sys.reload_modules
- sys.renderer_doc
- sys.returner_argspec
- sys.returner_doc
- sys.runner_argspec
- sys.runner_doc
- sys.state_argspec
- sys.state_doc
③、执行命令
[root@k8s_master ~]# salt --out=raw 'k8s_master' cmd.run_all 'echo HELLO' #raw格式
{'k8s_master': {'pid': , 'retcode': , 'stderr': '', 'stdout': 'HELLO'}} [root@k8s_master ~]# salt --out=json 'k8s_master' cmd.run_all 'echo HELLO' #json格式
{
"k8s_master": {
"pid": ,
"retcode": ,
"stderr": "",
"stdout": "HELLO"
}
} [root@k8s_master ~]# salt --out=yaml 'k8s_master' cmd.run_all 'echo HELLO' #yml格式
k8s_master:
pid:
retcode:
stderr: ''
stdout: HELLO [root@k8s_master ~]# salt --out=nested 'k8s_master' cmd.run_all 'echo HELLO' #nested格式
k8s_master:
----------
pid: retcode: stderr:
stdout:
HELLO [root@k8s_master ~]# salt --out=quiet 'k8s_master' cmd.run_all 'echo HELLO' #只执行,不输出

例:检测网络连接情况:


命令执行常用参数
对主机进行过滤参数:
-E,--pcre,通过正则表达式进行匹配:
salt -E 'k8s.*' test.ping #探测k8s开头的主机id名是否连通
-L,--list,以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分离。
salt -L 'k8s_master,k8s_node1' grains.item osfullname #获取主机id为:k8s_master,k8s_node1完整操作系统发行版名称
-G,--grain,根据被控主机的grains信息进行匹配过滤,格式为:<grain value>:<grain expression>
salt -G 'osrelease:7.3.1611' cmd.run 'python -V' #获取发行版本号为7.3.1611的python版本号
-I,--pillar,根据被控主机的pillar信息进行匹配过滤,格式为:"对象名称":"对象值"
salt -I 'nginx:root:/data' test.ping #探测具有'nginx:root:/data'信息的连通性。 #pillar属性配置文件如下:
nginx:
root: /data
-N,--nodegroup,根据主控端master配置文件中的分组名称进行过滤。
#分组配置:【/etc/salt/master】
nodegroups:
master: 'k8s_master'
agent: 'L@k8s_node1,k8s_node2'
#其中L@表示后面的主机id格式为列表,即主机id以逗号分隔:G@表示以grain格式描述:S@表示以IP子网或地址格式描述 salt -N agent test.ping #探测agent被控主机的连通性
-C,--compound,根据条件运算符not、and、or去匹配不同规则的主机信息
salt -C 'E@^k8s_node.* and G@os:Centos' test.ping #探测k8s_node开头并且操作系统版本为CentOS的主机的连通性
-S,--ipcidr,根据被控主机的IP地址或IP子网进行匹配
salt -S 192.168.0.0/ test.ping
salt -S 192.168.1.10 test.ping
saltstack 基本操作的更多相关文章
- saltstack基本操作第一篇章
一.安装saltstack 1)官网安装 http://repo.saltstack.com/#rhel saltstack的模块: https://www.unixhot.com/docs/sa ...
- saltstack学习笔记--grains基本操作
查看当前已经定义的监控项: [root@master ~]# salt "192.168.75.135" grains.items 192.168.75.135: ---- ...
- saltstack系列~第一篇
一 简介:从今天开始学习saltstack 二 salt的认证系列操作 1 原理 saltstack通过/etc/salt/pki/目录下面的配置文件的密钥进行通信,master端接受minion端后 ...
- saltstack 基础入门文档
saltstack 和 Puppet Chef 一样可以让你同时在多台服务器上执行命令也包括安装和配置软件.Salt 有两个主要的功能:配置管理和远程执行.这里讲述了saltstack的基本使用方法. ...
- saltstack(五) saltstack的state状态管理
一,YAML语法 首先先了解一下YAML,默认的SLS文件的renderer是YAML renderer.YAML是一个有很多强大特性的标记性语言.Salt使用了一个YAML的小型子集,映射非常常用的 ...
- 学习saltstack (四)
一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
随机推荐
- sqoop 使用笔记
好久没有更新自己技术博客,现在开始工作了,把自己遇到的问题写到这里边来 主要把自己的问题写出来,分享给大家 sqoop 导入数据时候 有时候会遇到mysql 中有sql 中的关键字 这时候如果直接导出 ...
- Github的建立及心得体会
第一次接触Github,这次注册最大的难处就是全英文,着实看不懂.仅凭着认识的几个常用词去了解个具体内容实在是太困难了.所以第一个体会就是要好好学英语背单词,不想看到满屏的英文就感觉头疼,烦躁.第二个 ...
- Sublime Text3前端必备插件
安装Package Control 在安装插件之前,需要让sublime安装Package Control.打开Sublime Text的控制台,快捷键ctrl + ~,在控制台中输入以下代码. im ...
- Redis的五种数据类型
官方的几篇很好的文章: https://redis.io/topics/data-types https://redis.io/topics/data-types-intro https://redi ...
- Activiti中子流程:SubProcess,CallActiviti的区别
子流程:SubProcess,CallActiviti的区别 https://community.alfresco.com/thread/221771-call-activiti-vs-subproc ...
- 解决因为本地代码和远程代码冲突,导致git pull无法拉取远程代码的问题
一.问题 当本地代码和远程代码有冲突的时候,执行git pull操作的时候,会提示有冲突,然后直接终止本次pull,查了些资料没有找到强制pull的方式,但是可以使用如下方式解决. 二.解决思路 可以 ...
- Jquery 组 表单select交互选项
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- mysql常用增删改查命令(纯纪录.orm用得基本功都没了。)
更新表数据: update table_name set xxx=xxx where condition; 增加字段: alter table table_name add field type ot ...
- (转)vmware下给linux虚拟机扩容
“Well, here’s another fine mess you’ve gotten me into” Let us pretend that you have an Ubuntu Server ...
- Spring MVC @ModelAttribute注解
在一个Controller内,被@ModelAttribute标注的方法会在此controller的每个handler方法执行前被执行. 被@ModelAttribute标注的方法的参数绑定规则和普通 ...