Как ограничить команды puppet agent? Мне нужно разрешить puppet agent работать только без 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
EDIT: Похоже, я заговорил слишком рано. Нуп просачивается. Хотя синтаксис выше правильный, один из просмотренных мной кавиатов не позволяет этому работать.https://puppet.com/docs/puppet/latest/env_environments.html
... среды имеют некоторые ограничения, большинство из которых являются известными ошибками или капризами реализации, а не выбором дизайна.
Puppet будет считывать только настройки modulepath, manifest, manifestdir и templatedir из блоков конфигурации среды.; другие настройки в любом из этих блоков будут игнорироваться в пользу настроек в блоках [master] или [main]. (Проблема 7497)
решение2
Так поступать нельзя, ведь тот, у кого есть доступ к командной строке, может применить практически любой вариант.
Если вы хотите контролировать, кто может развертывать ту или иную среду, я бы посоветовал использоватьMКоллективныйдля запуска puppet. Вы можете сделать там довольно подробные ACL, и он может координировать puppet на нескольких узлах и делать что-то вроде «развернуть на 2 машинах, если не выйдет из строя, развернуть на следующих 10, если не выйдет из строя, развернуть на остальных».