• 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
    two
    three
    four
    five
    '
    
        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'
        
    View Code

     

    查看帮助文档都有那些方法(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': 22206, 'retcode': 0, 'stderr': '', 'stdout': 'HELLO'}}
    
    [root@k8s_master ~]#  salt --out=json 'k8s_master' cmd.run_all 'echo HELLO'  #json格式
    {
        "k8s_master": {
            "pid": 22241, 
            "retcode": 0, 
            "stderr": "", 
            "stdout": "HELLO"
        }
    }
    
    [root@k8s_master ~]#  salt --out=yaml 'k8s_master' cmd.run_all 'echo HELLO'  #yml格式
    k8s_master:
      pid: 22260
      retcode: 0
      stderr: ''
      stdout: HELLO
    
    [root@k8s_master ~]#  salt --out=nested 'k8s_master' cmd.run_all 'echo HELLO'  #nested格式
    k8s_master:
        ----------
        pid:
            22279
        retcode:
            0
        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/16 test.ping
    salt -S 192.168.1.10 test.ping
  • 相关阅读:
    ci高级使用方法篇之连接多个数据库
    JavaSE入门学习17:Java面向对象之package(包)
    找出字符串中第一个出现次数最多的字符
    red5源代码编译并打包公布
    J.U.C--locks--AQS分析
    Spring Web MVC 原理学习(下)
    深入理解 Linux 内存管理
    Java面试问题总结
    盗版者的失落
    eclipse配置lombok插件
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8250570.html
Copyright © 2020-2023  润新知