• SaltStack事件驱动 – event reactor


    Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程。Event也为扩展SaltStack提供了更加友好的接口。目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等。
     
    1、查看Event事件
    可以通过命令查看event事件,然后再打开一个终端执行任务
    [root@master ~]# salt-run  state.event pretty=True
    20190926040122342821    {
        "_stamp": "2019-09-26T08:01:22.343862", 
        "minions": [
            "master"
        ]
    }
    salt/job/20190926040122342821/new    {
        "_stamp": "2019-09-26T08:01:22.354693", 
        "arg": [], 
        "fun": "test.ping", 
        "jid": "20190926040122342821", 
        "minions": [
            "master"
        ], 
        "missing": [], 
        "tgt": "master", 
        "tgt_type": "glob", 
        "user": "root"
    }
    salt/job/20190926040122342821/ret/master    {
        "_stamp": "2019-09-26T08:01:22.476802", 
        "cmd": "_return", 
        "fun": "test.ping", 
        "fun_args": [], 
        "id": "master", 
        "jid": "20190926040122342821", 
        "retcode": 0, 
        "return": true, 
        "success": true
    }
    View Code

    2、reactor配置

    [root@master ~]# cat /etc/salt/master.d/reactor.conf   #在master节点中配置reactor的配置信息
    reactor:
      - 'minion_start':                  #匹配event中事件tag
        - /srv/reactor/touch.sls      #minion启动是应用一个state文件
    [root@master ~]# 
    [root@master ~]# 
    [root@master ~]# cat /srv/reactor/touch.sls 
    touch_temp:
      local.state.sls:                      
        - tgt: {{ data['id'] }}
        - arg:
          - touch_abc
    [root@master ~]# 
    [root@master ~]# 
    [root@master ~]# cat /srv/salt/base/touch_abc.sls 
    touch_abc:
      file.append:
        - name: /tmp/abc.txt
        - text:
          - 'this is append line1'
          - 'this is append line2'
         
    [root@master ~]# 

    reactor SLS文件

    与salt reactor SLS有所以类似的地方。salt state和salt reator SLS文件都是使用YAML和Jinja写的,不过因为它们语法有些不同,且用作不同的目的,它们应该放在不同的目录中(如reactor是在/srv/salt/reactors目录)。

    reactor 的类型

    salt reactor有如下几种类型:

    • 远程执行: 在目标minions运行一个执行模块。这个可以通过调用salt命令来完成(包括应用state或highstate)
    • Salt Runners: 通过使用salt-run调用的任务。如HTTP runnner可以触发webhook
    • Wheel: Wheel命令管理你的salt环境,完成如接收密钥和更新配置设置的任务。

    远程执行

    这种类型的reactor是直接与salt执行模块连接。如果你考虑使用salt命令来运行一个远程执行模块,你应该知道salt命令必须包含三个信息:

    • 目标
    • 函数
    • 参数

    salt reactor中的远程执行也同样需要这三个信息:

    <section id>:
      local.<function>:
        - tgt: <target>
        - arg:
            <arguments>

    注意执行模块必须以local为前缀。我们来看在命令行安装一个包是怎样的:

    1、命令行
    salt 'myminion' pkg.install cowsay
    
    
    2、在reactor SLS文件中,应该是按如下配置:
    install cowsay on myminion:
      local.pkg.install:
        - tgt: 'myminion'
        - arg:
          - cowsay
  • 相关阅读:
    spring中各个模块的作用
    《Spring实战》学习笔记-第四章:面向切面的Spring
    《Spring实战》学习笔记-第四章:面向切面的Spring
    Centos7下永久修改mysql5.6最大连接数
    Prefix-List
    Route-Map
    PBR Lab2
    Lab PBR
    ISIS超载位解决流量黑洞
    ISIS TLV
  • 原文地址:https://www.cnblogs.com/gavin11/p/11592677.html
Copyright © 2020-2023  润新知