2020-03-23 20:05:22
salt的reactor系统让你能够对任何事件作出响应。你不只能够在作业和任务完成时作出响应,也能够在服务下线,用户登录,文件被更改和在任何地方发送的自定义事件作出反应。
在/etc/salt/master或/etc/salt/master.d/reactor.conf中添加reactor区块来配置reactor(只允许添加一个reactor区块)。
下面的示例是配置一个匹配minion启动,云资源回收和自定义事件的reactor:
reactor: # Salt master配置区块"reactor" - 'salt/minion/*/start': # 匹配tag "salt/minion/*/start" - /srv/reactor/start.sls # minion启动时应用的一个state文件 - /srv/reactor/monitor.sls # 另一个state文件 - 'salt/cloud/*/destroyed': # 可以使用通配符匹配tags - /srv/reactor/destroy/*.sls # 可以使用通配符匹配文件名 - 'myco/custom/event/tag': - salt://reactor/mycustom.sls
reactor的配置非常简单;reactor区块唯一的作用是关联事件tag与要运行reactor SLS文件。reactor是一个独立的线程,所以可以在SLS文件里执行繁重的任务。
reactor SLS文件具体YAML和Jinja全部的功能,所以你可以使用事件标记和数据执行过滤和测试。
我们来尝试在demo环境中添加一个reactor来测试这个系统。打开salt-vagrant-demo/saltstack/etc/master文件,添加一个reactor区块:
reactor: - 'my/custom/event/tag': - salt://reactor/customevent.sls
这个告诉salt master在任何时候一旦发现一个事件包含my/custom/event/tag,则马上调用customevent.sls文件。
我们学习reactor SLS文件后再创建customevent.sls文件。
现在先重启salt-master服务(service salt-master restart)使reactor生效。
你已经对salt state SLS文件有所了解了,与salt reactor SLS有所以类似的地方。salt state和salt reator SLS文件都是使用YAML和Jinja写的,不过因为它们语法有些不同,且用作不同的目的,它们应该放在不同的目录中(如reactor是在/srv/salt/reactors目录)。
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为前缀。我们来看在命令行安装一个包是怎样的:
salt 'myminion' pkg.install cowsay
在reactor SLS文件中,应该是按如下配置:
install cowsay on myminion: local.pkg.install: - tgt: 'myminion' - arg: - cowsay
在reactor中调用Runner模块和Wheel模块语法很简单,因为是在本地执行的函数,不是发送一个命令到远程系统。调用两个模块不需要arg或kwarg参数(除非Runner函数或Wheel函数接收参数)。
clear_the_grains_cache_for_all_minions: runner.cache.clear_grains
spin_up_more_web_machines: runner.cloud.profile: - prof: centos_6 - instances: - web11 - web12
下面是一个wheel示例用来自动接受minion的密钥(在生产环境中你应该增加额外的检查来避免接受恶意minions)。
accept_new_minion: wheel.key.accept: - match: {{ data['id'] }}
下面的reactor SLS用来对salt/cloud/*/created事件反应:
new vm alert: local.pagerduty.create_event: - tgt: minion - kwarg: description: "New VM {{ data['name'] }}" details: "New VM on {{ data['provider'] }}: {{ data['name'] }}" service_key: 1162ee51ed6e46239265c969729c48eb profile: my-pagerduty-account
如果你配置了当构建系统完成后触发一个自定义事件,那么你可以使用slack来通知你:
spam slack: local.slack_notify.post_message - tgt: buildserver - kwarg: channel: "Development" api_key: peWcBiMOS9HrZG15peWcBiMOS9HrZG15" message: "Build {{ data['build_id'] }} finished with status: {{ data['status'] }}"
state执行模块可以用在reactor SLS文件来应用一个salt state,或者触发一个highstate。
{% if data['id'] == 'mysql1' %} highstate_run: local.state.highstate: - tgt: mysql1 {% endif %}
SaltStack事件驱动(1) – 监视事件
03-01
SaltStack基础(6) – 使用highstate应用多个state文件
06-18
SaltStack配置管理(5) – JINJA
04-16
理解SaltStack(4) – 远程执行
05-10
SaltStack安装与配置
05-31
Docker命令行参考(17) – docker events从服务器获取实时事件
02-14
驱动和软件下载列表 ThinkPad X30
07-08
Android按钮单击事件的五种实现方式
04-22
Docker OOM事件介绍
05-21
Intel芯片组USB3.0驱动程序的手动安装方法
07-13
Lenovo G550在Windows XP操作系统下触控板驱动安装方法
07-17
Realtek HD声卡驱动程序版本问题导致部分机型出现蓝屏问题
07-23
Redhat5系统安装网卡驱动报错
07-21
Win7系统下如何通过添加打印机方法安装打印机驱动程序?
07-15
万全R670 6100千兆网卡驱动(Intel 82545GM)
07-12
在系统处于睡眠状态时访问自加密驱动器上的数据
07-11
如何下载并安装声卡驱动
07-12
如何卸载触控板驱动
07-17
如何在 Windows 系统下安装打印机硬件驱动程序
07-08
Docker用户指南(15) – 默认bridge网络 – 绑定容器端口到主机
03-31
驱动总裁最新绿色免安装版 2.6.0.0 最新版
287.73M
下载AnyDVD HD(DVD电影驱动程序) v8.5.5.2 官方版
16.3MB
下载Remind-Me 日历事件提醒软件
6.6M
下载dx9.0c(游戏必备驱动)2021 免费版
104.1M
下载setpoint(驱动程序综合软件)v6.70.55 中文版
82.9M
下载usb3.0驱动(硬件驱动安装工具) v6.6 绿色版
8.67MB
下载win7网卡驱动(WIN7系统网卡驱动程序)加强版
8.1M
下载万能声卡驱动下载
5.53MB
下载万能摄像头驱动(摄像头驱动程序)2011.3 正式版
18.97MB
下载映美fp730k打印机驱动 v2.0 官方版
9.1M
下载联想指纹识别软件(联想指纹识别驱动)2021 pc版
6.43MB
下载虚拟声卡(声卡驱动程序) V2.1 中文版
1.97MB
下载Driver Reviver下载
16.8M
下载IObit Driver Booster Pro下载
24.9MB
下载virtual drive manager下载
0.21MB
下载奔图p1000下载
90M
下载