如何限制 puppet 代理命令?我只需要允許傀儡代理在沒有針對生產分支的 noop 的情況下運行。
- 堵塞
puppet agent --test --environment devbranch
- 允許
puppet agent --test --environment devbranch --noop
- 允許
puppet agent --test --environment production
我認為 auth.conf 中的某種魔法應該能夠解決這個問題,但我還不夠熟悉,無法做到這一點。
答案1
感謝@Zoredache,我成功地按照我需要的方式建立了這個版本。
我使用 [main] 部分動態建立和管理分支,並使用 [生產] 覆蓋 noop 設定。我確信它也可以在[代理]中完成,但我已經在這裡開始了。
[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
編輯:看來我說得太早了。努普正在流血。儘管上面的語法是正確的,但我查看過的一個警告不會讓這個工作。https://puppet.com/docs/puppet/latest/env_environments.html
..環境有一些限制,其中大多數是已知的錯誤或實現的變幻莫測,而不是設計選擇。
Puppet 只會從環境配置區塊讀取 modulepath、manifest、manifestdir 和 templatedir 設定;這些區塊中的其他設定將被忽略,以支援 [master] 或 [main] 區塊中的設定。 (第 7497 期)
答案2
你不能那樣做,有權訪問命令行的人可以強制執行幾乎任何選項。
如果你想控制誰可以部署什麼環境我建議使用麥集體用於運行的木偶。您可以在那裡制定非常詳細的ACL,它可以在多個節點上協調puppet,並執行諸如「在2 台機器上部署,如果沒有失敗,則在接下來的10 台機器上部署,如果沒有失敗,則在其餘機器上部署”之類的操作。