你好朋友,
我们在这里设置了由Salt州管理的100多台服务器。由于不同的人在组织中扮演不同的角色,我真的希望有可能聚合"一些州。在这种情况下:更新(yum)包。
我真的希望我们的系统管理员安全地能够在主人身上执行这样的命令:
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
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
文件中,因为这会导致所有状态在这些文件中执行,并且不是我想要的。它也会成为一个非常混乱的文件。
我也不想执行salt '*' pkg.upgrade
因为我的状态取决于更新;即,如果更新包nagios
,则应运行有关最新配置文件的状态,因此应执行nagios
服务的重新启动。所有这些都是使用watch
和require
参数在salt中配置的,所以我也想在更新我的包时使用它。此外,我想控制哪些包可以更新。
我不知道我是否在正确的道路上,或者根本不可能使用Salt,但也许这里有人对如何实现这种行为有一个绝妙的想法。我会非常感激的!