SaltStack Beacons无法自动监控/etc/hosts文件求助
SaltStack Beacons inotify监控/etc/hosts失效问题解决
问题现象
- Minion手动执行
salt-call event.send salt/beacon/*/inotify//etc/hosts,Master能正常接收事件 - 但修改或删除
/etc/hosts时,Beacons完全不触发自动事件 - 已经在Minion上安装了
python3-pyinotify
Minion日志报错
2022-11-17 12:39:14,299 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:14,300 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify 2022-11-17 12:39:15,300 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:15,300 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify 2022-11-17 12:39:16,300 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:16,301 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify 2022-11-17 12:39:17,300 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:17,301 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify 2022-11-17 12:39:18,300 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:18,301 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify 2022-11-17 12:39:19,300 [salt.beacons :89 ][WARNING ][14639] No validate function found for inotify, running basic beacon validation. 2022-11-17 12:39:19,301 [salt.beacons :167 ][WARNING ][14639] Unable to process beacon inotify
现有配置
Minion Beacons配置(/etc/salt/minion.d/beacons.conf)
beacons: inotify: - files: /etc/hosts: mask: - modify - disable_during_state_run: True
Master Reactor配置(reactor.conf)
reactor: - salt/beacon/*/inotify//etc/hosts: - /srv/salt/reactor/etc_hosts.sls
Reactor执行脚本(/srv/salt/reactor/etc_hosts.sls)
revert_etc_hosts: local.state.sls: - tgt: {{ data['id'] }} - arg: - formula.etc_hosts
Minion基础配置
grains: salt-cloud: driver: ec2 profile: base_ec2_micro_ubuntu provider: ec2-ap-south-1-public:ec2 hash_type: sha256 id: dev-web log_level: info master: 10.10.10.10 default_include: minion.d/*.conf
问题分析与修复
1. 核心原因:配置格式错误
日志里的警告已经点明问题:inotify模块找不到验证函数,无法处理Beacon配置。这是因为当前把files和disable_during_state_run都放在了列表项(带-)里,而inotify的配置要求这两个是inotify下的直接键值对,不是列表元素。
2. 修正Beacons配置
把/etc/salt/minion.d/beacons.conf改成以下格式:
beacons: inotify: files: /etc/hosts: mask: - modify disable_during_state_run: True
3. 验证修复效果
- 重启Minion服务:
systemctl restart salt-minion - 修改
/etc/hosts文件,然后在Master上执行salt-run state.event pretty=True,检查是否收到对应的beacon事件 - 确认salt-minion用户对
/etc/hosts有读权限(默认情况下没问题,可通过ls -l /etc/hosts查看)
4. 额外排查点
- 如果还是不行,检查
pyinotify版本是否与SaltStack兼容:执行pip3 show pyinotify查看版本,必要时安装SaltStack官方推荐的对应版本 - 把Minion的
log_level改成debug,重启后查看更详细的日志,排查是否有其他配置解析或权限问题
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

