一、常用操作

①、模块查看

#查看全部模块
[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 基本操作的更多相关文章

  1. saltstack基本操作第一篇章

    一.安装saltstack 1)官网安装 http://repo.saltstack.com/#rhel saltstack的模块:   https://www.unixhot.com/docs/sa ...

  2. saltstack学习笔记--grains基本操作

    查看当前已经定义的监控项: [root@master ~]# salt "192.168.75.135" grains.items 192.168.75.135:     ---- ...

  3. saltstack系列~第一篇

    一 简介:从今天开始学习saltstack 二 salt的认证系列操作 1 原理 saltstack通过/etc/salt/pki/目录下面的配置文件的密钥进行通信,master端接受minion端后 ...

  4. saltstack 基础入门文档

    saltstack 和 Puppet Chef 一样可以让你同时在多台服务器上执行命令也包括安装和配置软件.Salt 有两个主要的功能:配置管理和远程执行.这里讲述了saltstack的基本使用方法. ...

  5. saltstack(五) saltstack的state状态管理

    一,YAML语法 首先先了解一下YAML,默认的SLS文件的renderer是YAML renderer.YAML是一个有很多强大特性的标记性语言.Salt使用了一个YAML的小型子集,映射非常常用的 ...

  6. 学习saltstack (四)

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

  7. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

  8. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  9. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

随机推荐

  1. 《Linux内核设计与实现》第一二章笔记

    第一章 linux内核简介 每个处理器在任何时间点上的活动必然概括为下列三者: 运行于用户空间,执行用户进程 运行于内核空间,处于进程上下文,代表某个特定的进程执行 运行于内核空间,处于中断上下文,与 ...

  2. 第一次Sprint

    项目刚开始做的话,离客户的需求应该,蛮远的. 用的是eclipse加安卓模拟器在弄. 目前主要弄APP的界面和一些主要的功能算法,各个功能板块的位置划分的内容. Github团队地址是:https:/ ...

  3. docker container can not connect internet

    https://stackoverflow.com/questions/23810845/i-cant-get-docker-containers-to-access-the-internet htt ...

  4. Docker Compose 容器编排

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  5. PGSQL 获取数据库大小以及表达小等的SQL

    SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner, CASE WHEN pg_catalog.has_da ...

  6. laravel 在nginx服务器上除了首页其余都是404的问题

    nginx对应站点的.conf配置文件添加如下代码 location / { try_files $uri $uri/ /index.php$is_args$query_string; #语法: tr ...

  7. python 模块之-hashlib

    python 模块hashlib import hashlib m=hashlib.md5()         # 生成MD5加密对象 m.update('jiami-string'.encode(' ...

  8. Hibernate的继承映射

    对象模型示例: 继承映射的实现方式有以下三种: (一)每棵类继承树一张表 (二)每个类一张表 (三)每个子类一张表 (一)每棵类继承树一张表 关系模型如下: 映射文件如下: <hibernate ...

  9. BZOJ5300 [Cqoi2018]九连环 【数学】【FFT】

    题目分析: 这道题是数学必修五的原题,做法如下图,书上讲得很详细了. 那么这道题目用快速幂就可以解决了,值得注意的是,分析时间复杂度会发现直接做乘法其实是O(n^2)的,但是有一个1/20左右的常数, ...

  10. Codeforces Round #410 (Div. 2) B

    B. Mike and strings time limit per test 2 seconds memory limit per test 256 megabytes input standard ...