设为首页 收藏本站
查看: 1631|回复: 0

[经验分享] saltstack学习笔记10-Event和Reactor系统

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-4-21 11:28:44 | 显示全部楼层 |阅读模式
Event是saltstack里面的对每个事件的一个记录,它相比job更加底层,event能记录更加详细的saltstack事件,比如minion服务启动后请求master签发证书或者证书校验的过程,都能通过event事件来查看整个过程

event也为扩展saltstack提供了更加友好的接口

官方列出一些event事件,包括认证,minion连接master,key认证,job等

查看event事件
可以通过以下命令查看event事件,然后再打开一个终端执行任务
salt-run state.event pretty=True
另一个终端执行salt 'minion1' test.ping
salt/event/new_client        {
    "_stamp": "2016-04-20T02:37:17.643259"
}
20160420103717664109        {
    "_stamp": "2016-04-20T02:37:17.665541",
    "minions": [
        "minion1"
    ]
}
salt/job/20160420103717664109/new        {
    "_stamp": "2016-04-20T02:37:17.666289",
    "arg": [],
    "fun": "test.ping",
    "jid": "20160420103717664109",
    "minions": [
        "minion1"
    ],
    "tgt": "minion1",
    "tgt_type": "glob",
    "user": "root"
}
salt/job/20160420103717664109/ret/minion1        {
    "_stamp": "2016-04-20T02:37:17.836600",
    "cmd": "_return",
    "fun": "test.ping",
    "fun_args": [],
    "id": "minion1",
    "jid": "20160420103717664109",
    "retcode": 0,
    "return": true,
    "success": true
}

这个时候可以看到每个event事件的详细信息,包括job key校验等信息
--------------------------------------------------------------------------

在master上配置Reactor
在前面已经简单测试了event,接下来说说reactor系统,reactor是基于event的每个事件来做相应的操作(state)
可以理解reactor系统是一直监听着event,然后触发一些states操作
下面通过一个例子来讲解下reactor系统的适用场景
日常大规模新机器上线或者初始化机器的时候,都希望minion第一次服务起来的时候就能完成所有的配置,这个时候需要自动完成minion的证书签发和根据不同业务完成不同states配置
恰好reactor就是干这个事情的

在master配置文件里面添加如下内容
reactor:   
  - 'salt/auth':    #监听证书认证event
    - /srv/reactor/Minion.sls    #执行states sls文件
  - 'salt/minion/Minion/start':    #监听Minion start event
    - /srv/reactor/auto.sls    #执行states sls文件
关于event的定义,可以通过上一章节对event的了解根据需要监听的event来进行相应的配置,当然reactor里面对event的监听还支持正则表达式的方式,下面来看看这两个sates.sls文件

cat /srv/reactor/Minion.sls
{% if 'act' in data and data['act'] == 'pend' and data['id'].startswith('Min')%}
  key_accept:
  wheel.key.accept:
    - match: {{data['id']}}
{% endif %}
这个文件主要是取event里面的数据,然后根据minion的ID进行证书签发,我们在state.sls文件里面引入了Jinja相关的语法,下面我们来看看进行初始的auto.sls
run_state:
  local.state.sls:
    - tgt: {{data['id']}}
    - arg:
    - test
run_init:
  local.cmd.run:
    - tgt: {{data['id']}}
    - arg:
    - echo initsok >> /tmp/cpis
这个文件运行了两个module,一个是state.sls进行,一个是cmd.run
第一个run_state的意思跟手动针对minion运行state.sls test一样,第二个run_init表示针对minion运行cmd.run 'echo initok' >> /tmp/cpis一样,下面我们来看下test这个sls文件,我这里只是一个简单的文件管理例子
cat /srv/salt/test.sls
/tmp/example:
  file.managed:
    - source: salt://example
到这里,master端的reactor配置就算配置好了,下面我们需要重启master服务,这个时候可以新建一台minion.minion的ID,只要是以min字母开头即可,当minion服务启动后,minion会进行自动的初始配置


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-206944-1-1.html 上篇帖子: saltstack学习笔记9-JOB 下篇帖子: saltstack学习笔记11-Renderer
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表