¿Cómo aplicar la revisión específica de Git de un file de configuration y deshacer si no está bien?

Problema: deseo poder instalar un RPM con una revisión específica de un file de configuration.

Toma el siguiente ejemplo:

Digamos que tengo un RPM que quiero garantizar que esté instalado y en funcionamiento. No hay problema aqui Ahora diga que quiero proporcionar un file de configuration diferente para cada entorno de títeres. También no hay problema aquí.

Pero ahora digo que quiero hacer el control de versiones específicamente y solo en los files de configuration, entonces me gustaría poder detectar que existe una nueva versión de un file de configuration, por ejemplo, en un repository de Git y, si es así, se aplica el file de configuration y services reiniciados Si los services se ejecutan correctamente, entonces, de lo contrario, se debe volver a aplicar la revisión anterior del file de configuration (retrotracción del file de configuration a la revisión anterior).

¿Es esto posible con marionetas? De ser así, ¿qué tipo de architecture sería el mejor enfoque para tal escenario?

Cualquier punto en la dirección correcta o ayuda en este asunto será muy apreciado.

Gracias,

Puede build un esquema de la siguiente manera:

  1. Haga que Puppet deployment cnetworkingenciales para su repository central de git en cada agente
  2. Use el tipo vcsrepo para permitir que Puppet mantenga un clon del repository en cada agente con la revisión deseada
  3. Haga que los resources del file de configuration usen fonts locales.

    source => '/path/to/local/git/clone/my_config.ini' 
  4. Use el parámetro validate_cmd para hacer que Puppet retroceda si las cosas no están bien.

     validate_cmd => 'apache2ctl configtest' 
  5. Haga que el file notify al service respectivo o que se subscribe al service para que Puppet vuelva a cargar la configuration al cambiarla.

No veo por qué sigues haciendo reference a los packages de RPM; no son pertinentes al problema, por lo que sé.