Puppet - 環境ごとにアクションを制限しますか?

Puppet - 環境ごとにアクションを制限しますか?

Puppet エージェントのコマンドを制限するにはどうすればよいですか? 本番ブランチに対しては、Puppet エージェントが noop なしでのみ実行できるようにする必要があります。

  • ブロック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 が漏れています。上記の構文は正しいのですが、私が調べた警告の 1 つにより、これが機能しません。詳しくは、https://puppet.com/docs/puppet/latest/env_environments.html をご覧ください。

.. 環境にはいくつかの制限がありますが、そのほとんどは設計上の選択ではなく、既知のバグや実装上の不確実性です。

Puppetは環境設定ブロックからmodulepath、manifest、manifestdir、templatedir設定のみを読み取ります。; これらのブロック内の他の設定は無視され、[master] または [main] ブロック内の設定が優先されます。(問題 7497)

答え2

そのようにすることはできません。コマンドラインにアクセスできるユーザーであれば、ほぼすべてのオプションを強制できます。

誰がどの環境を展開できるかを制御したい場合は、MコレクティブPuppet を実行するためのものです。そこではかなり詳細な ACL を作成でき、複数のノードで Puppet を調整して、「2 台のマシンにデプロイし、失敗しなければ次の 10 台にデプロイし、失敗しなければ残りのマシンにデプロイする」などの操作を実行できます。

関連情報