你好有用的朋友,
我们在这里设置了由Salt州管理的100台服务器 . 由于不同人员执行组织中的不同角色,我真的希望有可能“聚合”某些州 . 在这种情况下:更新(yum)包 .
我真的希望我们的系统管理员安全地能够在master上执行这样的命令:
salt '*' state.apply update.packages
也许我们的开发人员可以执行:
salt 'dev-*' state.apply update.application
当然我们有一大堆sls文件,这个问题的关键是我不希望所有这些状态都被执行,而只是选择了一堆 .
为此,我尝试创建一个 update/packages.sls 状态,包含:
update-packages:
test.nop
然后添加到,例如以下现有状态:
nagios-plugins-all:
pkg.latest:
- require:
- pkg: corepackages
a watch_in 如下:
nagios-plugins-all:
pkg.latest:
- require:
- pkg: corepackages
- watch_in:
- test: update-packages
不幸的是,这显然不是可行的方法,因为执行 salt 'testserver001' state.apply update.packages 现在只返回:
testserver001:
----------
test_|-update-packages_|-update-packages_|-nop:
----------
__id__:
update-packages
__run_num__:
0
changes:
----------
comment:
Success!
duration:
0.946
name:
update-packages
result:
True
start_time:
12:10:46.035686
虽然我确信可以使用更新的软件包 . 我不能 include 将所有现有的状态文件放入 update/packages.sls 文件中,因为这会导致在这些文件中执行 all 状态,这也不是我想要的 . 它也会成为一个非常混乱的文件 .
我也不想只执行 salt '*' pkg.upgrade ,因为我有根据更新的状态;即如果更新包 nagios ,则应运行有关最新配置文件的状态,因此应执行 nagios 服务的重新启动 . 所有这些都是使用 watch 和 require 参数在salt中配置的,所以我也想在更新我的包时使用它 . 此外,我想控制哪些包可以更新 .
我不知道我是否走在正确的道路上,或者是否可以使用Salt,但也许有人对如何实现这种行为有一个绝妙的想法 . 我会非常感激的!