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 台にデプロイし、失敗しなければ残りのマシンにデプロイする」などの操作を実行できます。