Марионетка — ограничить действия в зависимости от среды?

Марионетка — ограничить действия в зависимости от среды?

Как ограничить команды 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, если не выйдет из строя, развернуть на остальных».

Связанный контент