Puppet - 限制每个环境的操作?

Puppet - 限制每个环境的操作?

我如何限制 Puppet 代理命令?我只需要允许 Puppet 代理在生产分支上无操作地运行。

  • 堵塞puppet agent --test --environment devbranch
  • 允许puppet agent --test --environment devbranch --noop
  • 允许puppet agent --test --environment production

我认为 auth.conf 中的某种魔法应该能够解决这个问题,但我对此不够熟悉。

答案1

感谢@Zoredache,我已经设法按照我需要的方式获得此构建。

我使用 [main] 部分动态创建和管理分支,并使用 [production] 覆盖 noop 设置。我确信也可以在 [agent] 中完成,但我已经在这里开始了。

[main]
    logdir = /var/log/puppet
    rundir = /var/run/puppet
    confdir = /puppet/$environment
    vardir = /puppet/.$environment-var
    ssldir=/etc/puppet/ssl
    environment = production
    server = puppet.domain.org
    pluginsync = true
    noop = true
    # Disable running all branches by default

[production]
    noop = false

编辑:看来我说得太早了。noop 已经渗透进来了。虽然上面的语法是正确的,但我看过的一个警告不允许它工作。https://puppet.com/docs/puppet/latest/env_environments.html

.. 环境有一些限制,其中大多数是已知的错误或实施的变化,而不是设计选择。

Puppet 将仅从环境配置块中读取 modulepath、manifest、manifestdir 和 templatedir 设置;这些块中的其他设置将被忽略,而采用 [master] 或 [main] 块中的设置。(问题 7497)

答案2

你不能那样做,有权限访问命令行的人可以强制执行几乎任何选项。

如果你想控制谁可以部署什么环境我建议使用集体用于运行 puppet。您可以在那里创建非常详细的 ACL,它可以协调多个节点上的 puppet 并执行诸如“在 2 台机器上部署,如果没有失败,则在下 10 台机器上部署,如果没有失败,则在其余机器上部署”之类的操作。

相关内容