发布时间: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 %}
驱动总裁下载
287.73M
dx9.0c(游戏必备驱动)2021 免费版
104.1M
setpoint(驱动程序综合软件)v6.70.55 中文版
82.9M
usb3.0驱动下载
8.67MB
virtual drive manager(虚拟驱动器管理工具) V1.32 绿色版
0.21MB
win7网卡驱动(WIN7系统网卡驱动程序)加强版
8.1M
万能声卡驱动(声卡驱动软件) 1.14 免费版
5.53MB
万能摄像头驱动(摄像头驱动程序)2011.3 正式版
18.97MB
奔图p1000 (打印机驱动程序) v4.2.0 官方版
90M
AnyDVD下载
16.3MB
Driver Reviver下载
16.8M
IObit Driver Booster Pro下载
24.9MB
Remind-Me破解版
6.6M
映美下载
9.1M
联想指纹识别软件下载
6.43MB
虚拟声卡下载
1.97MB
2020-05-28
如何在COMBO光驱下使用Nero软件刻录光盘
Redis报错-ERR max number of clients reached
Windows 7系统AHCI开启后重启出现蓝屏无法启动或者死机解决方案
Lenovo G485在Windows7和Windows8下使用麦克风时出现回音的问题
数字证书原理
Ubuntu 16.04安装Docker Compose及简单的使用示例
GIF制作软件Vibosoft Animated GIF Maker安装教程
Docker管理指南(5) – 使用systemd控制和配置Docker
Supervisor Install for CentOS 6.9 final