Как я могу ограничить команды марионеточного агента? Мне нужно только разрешить марионеточному агенту работать без петли в производственной ветви.
puppet agent --test --environment devbranch
puppet agent --test --environment devbranch --noop
puppet agent --test --environment production
Я думаю, что какое-то волшебство в auth.conf должно позаботиться об этом, но я недостаточно знаком для этого.
Благодаря @Zoredache мне удалось получить эту сборку так, как мне нужно.
Я использую раздел [main] для динамического создания и управления ветвями и [production], чтобы переопределить настройку 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).
Вы не можете сделать это так, кто-то, у кого есть доступ к командной строке, может применить практически любую опцию.
Если вы хотите контролировать, кто может развертывать какой env, я бы посоветовал использовать MCollective для бега марионетки. Вы можете создать довольно подробные списки ACL, и он может координировать марионетку на нескольких узлах и делать такие вещи, как «развернуть на 2 машинах, если не сработает, развернуть на следующих 10, если не сработает, развернуть в покое».