我有几百台服务器连接到salt-master,我需要找到所有安装了特定包或正在运行服务的服务器。我需要找到所有安装了特定软件包或正在运行服务的服务器。我如何编写一个查询(minion target)来找到这些minion,并运行一个命令(例如服务重启)。
首先,要找到针对你的小弟的最佳方法,通过参考 瞄准爪牙 盐业文件,或者说 开始吧。目标 指南。
例如,如果它要检查所有运行CentOS的小伙伴,你可以只用一个集中在 os
粒。
salt -G 'os:centos' test.ping
如果你想让他们每一个人都能有这样的能力 vim-enhanced
软件包安装后,用 pkg执行模块:
salt -G 'os:centos' pkg.version vim-enhanced
然后你可以使用一个简单的bash脚本,用你想在后面运行的命令来循环执行结果,但是要使用 --out txt
参数来简化输出,以便在bash脚本中使用。
一个简单的bash脚本例子,使用 服务执行模块:
PKG_INSTALLED=`salt -G 'os:centos' pkg.version vim-enhanced --out txt | cut -d':' -f1`
for PKG in "$PKG_INSTALLED"; do
salt "$PKG" service.start <target-service>
done
可通过以下方式进一步简化: -L
争论。
TARGETS=`salt -G 'os:centos' pkg.version vim-enhanced --out txt | cut -d':' -f1`
salt -L "$TARGETS" service.start <service>
信息: -L
arg。
-L, --list Instead of using shell globs to evaluate the target
servers, take a comma or whitespace delimited list
of servers.
这条命令在技术上可以缩减为一句话, 但它是一个很长的。
salt -L "$(salt -G 'os:centos' pkg.version vim-enhanced --out txt | cut -d':' -f1)" service.start <service>
如果不希望仅仅是专门的目标,最好使用 盐州.
以下应该是不错的资源。