创建"更新所有"在Saltstack

时间:2016-07-27 10:33:53

标签: salt-stack

你好朋友,

我们在这里设置了由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服务的重新启动。所有这些都是使用watchrequire参数在salt中配置的,所以我也想在更新我的包时使用它。此外,我想控制哪些包可以更新。

我不知道我是否在正确的道路上,或者根本不可能使用Salt,但也许这里有人对如何实现这种行为有一个绝妙的想法。我会非常感激的!

1 个答案:

答案 0 :(得分:0)

你可能想看看External Auth System的盐。

这样,您可以将用户和组限制为特定的minions和命令,甚至可以限制参数。