¿Cómo puedo restringir los comandos del agente títere? Sólo necesito permitir que el agente títere corra sin obstáculos contra la rama de producción.
- Bloquear
puppet agent --test --environment devbranch
- Permitir
puppet agent --test --environment devbranch --noop
- Permitir
puppet agent --test --environment production
Creo que algún tipo de magia en auth.conf debería poder encargarse de esto, pero no estoy lo suficientemente familiarizado como para hacerlo.
Respuesta1
Gracias a @Zoredache, logré obtener esta compilación de la manera que necesito.
Estoy usando la sección [principal] para crear y administrar dinámicamente ramas y [producción] para anular la configuración de noop. Estoy seguro de que también se podría hacer en [agente] pero ya lo había iniciado aquí.
[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
EDITAR: Parece que hablé demasiado pronto. El nudo está sangrando. Aunque la sintaxis anterior es correcta, uno de los caviats que revisé no permite que esto funcione.https://puppet.com/docs/puppet/latest/env_environments.html
... los entornos tienen algunas limitaciones, la mayoría de las cuales son errores conocidos o caprichos de implementación más que opciones de diseño.
Puppet solo leerá las configuraciones modulepath, manifest, manifestdir y templatedir de los bloques de configuración del entorno.; otras configuraciones en cualquiera de estos bloques se ignorarán en favor de las configuraciones en los bloques [master] o [main]. (Número 7497)
Respuesta2
No puedes hacerlo así, alguien que tenga acceso a la línea de comandos podría aplicar prácticamente cualquier opción.
Si desea controlar quién puede implementar qué entorno, le recomendaría usarMColectivopara correr títere. Puede crear ACL bastante detalladas allí, y puede coordinar Puppet en múltiples nodos y hacer cosas como "implementar en 2 máquinas, si no falla, implementar en las siguientes 10, si no falla, implementar en reposo".