如何使用SaltStack在自定义事件触发时向IRC频道发送消息
SaltStack IRC消息推送配置方案
1. 配置ircbot engine基础运行参数
首先在Salt Master节点添加ircbot engine配置,编辑/etc/salt/master.d/ircbot.conf文件,示例配置如下:
engines: - ircbot: # IRC服务器地址 server: irc.example.com # 连接端口,SSL端口一般为6697,非SSL为6667 port: 6697 use_ssl: True # Bot的IRC昵称 nick: salt_alert_bot realname: Salt Stack Alert Bot ident: saltbot # 要加入的IRC频道列表 channels: - "#operation-alerts" # 允许接收消息的主机地址,默认仅允许本地访问 allow_hosts: - "127.0.0.1" # 若IRC服务需要密码验证则填写,无密码可删除该字段 password: "your_irc_auth_password"
配置完成后重启salt-master服务生效,执行以下命令确认engine正常运行:salt-run engine.ls | grep ircbot
返回结果包含ircbot即为运行正常。
2. 触发IRC消息推送
ircbot engine会自动监听Salt事件总线上tag为salt/engines/ircbot/message的事件,匹配到对应事件后会自动将事件内容推送到指定IRC频道/用户。
2.1 自定义事件触发推送
你已完成自定义事件监听配置,只需在事件触发逻辑中向事件总线发送符合上述tag要求的事件即可,事件需包含两个必填字段:
channel:目标IRC频道名(带#)或目标用户昵称message:要发送的具体消息内容
在Minion侧发送事件命令示例:salt-call event.send salt/engines/ircbot/message channel="#operation-alerts" message="告警:minion-01节点磁盘使用率超过90%"
在Master侧发送事件命令示例:salt-run event.send salt/engines/ircbot/message channel="#operation-alerts" message="通知:全量配置同步任务执行完成"
2.2 从Salt State中触发推送
直接在State文件中调用event.send模块即可,示例State配置如下:
# 服务部署完成后发送IRC通知 send_deploy_success_notice: event.send: - name: salt/engines/ircbot/message - data: channel: "#operation-alerts" message: "应用服务部署完成,版本:v{{ pillar['app_version'] }},部署节点:{{ grains['id'] }}" # 配置依赖,仅在部署任务执行成功后发送通知 - require: - pkg: install_app_package
注意事项
- 包含#的IRC频道名在命令行、State文件中需用引号包裹,避免被解析为注释
- 若需给所有推送消息添加统一标识,可在ircbot engine配置中新增
prefix参数,如prefix: "[Salt告警]" - 如需限制可推送消息的来源身份,可调整
allow_hosts配置字段的IP范围
内容的提问来源于stack exchange,提问作者mihca
相关产品推荐
相关产品推荐

