Marioneta: ¿restringir acciones por entorno?

Marioneta: ¿restringir acciones por entorno?

¿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.

  • Bloquearpuppet agent --test --environment devbranch
  • Permitirpuppet agent --test --environment devbranch --noop
  • Permitirpuppet 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".

información relacionada