如何在salt中找到安装了特定包的主机?

问题描述 投票:0回答:1

我有几百台服务器连接到salt-master,我需要找到所有安装了特定包或正在运行服务的服务器。我需要找到所有安装了特定软件包或正在运行服务的服务器。我如何编写一个查询(minion target)来找到这些minion,并运行一个命令(例如服务重启)。

salt-stack salt
1个回答
0
投票

针对目标奴才的特设命令

首先,要找到针对你的小弟的最佳方法,通过参考 瞄准爪牙 盐业文件,或者说 开始吧。目标 指南。

例如,如果它要检查所有运行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>

"使用Salt States

如果不希望仅仅是专门的目标,最好使用 盐州.

资源

以下应该是不错的资源。

© www.soinside.com 2019 - 2024. All rights reserved.