【问题标题】:Create "update all" state in Saltstack在 Saltstack 中创建“全部更新”状态
【发布时间】:2016-07-27 10:33:53
【问题描述】:

乐于助人的朋友们,

我们在这里设置了 100 多台由 Salt 状态管理的服务器。由于组织中的不同角色由不同的人执行,我真的很想有可能“聚合”一些状态。在这种情况下:更新(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 实现,但也许这里有人对如何实现这种行为有一个绝妙的想法。非常感谢!

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

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

    通过这种方式,您可以将用户和组限制为特定的奴才和命令,甚至可以限制参数。

    【讨论】:

    • 我不想限制用户实际能够执行的东西,我想让执行由不同目录中的多个状态组成的重复性任务变得更容易......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多