Asegúrese de que Puppet realice pasos procesales como parte de la implementación

Asegúrese de que Puppet realice pasos procesales como parte de la implementación

Sé que el uso de pasos de procedimiento en Puppet generalmente está mal visto, pero dado que lo estamos usando para implementar aplicaciones en clúster administradas por Veritas, hay un conjunto específico de pasos que deben realizarse antes de que se llame a la instalación rpm.

Actualmente, congelamos manualmente el clúster de Veritas para que no intente realizar una conmutación por error en la aplicación, ejecutamos Puppet, que instala el RPM (desactivando la aplicación si es necesario) y se le indica a Puppet que no inicie la aplicación. Luego iniciamos manualmente la aplicación y descongelamos Veritas. Finalmente, verificamos el estado.

Me gustaría automatizar esos pasos de Veritas, para que solo tengamos que ejecutar Puppet. Estos pasos solo se realizan en nuestro entorno de producción. Para todos los demás, solo necesitamos llamar a la instalación de RPM. Para complicar las cosas, no quiero seguir ninguno de estos pasos si nada ha cambiado.

¿Cuál es la forma preferida de hacer algo como esto? estaba leyendo sobreEjecutar etapas, pero parece que requeriría una refactorización significativa de mi código existente.

Me pregunto si alguien podría darme algunas ideas sobre cómo manejar esto.

Respuesta1

Según su descripción del problema, debe usar planes o incluir todo en un ejecutivo o script para poder especificar el orden de las cosas. Los manifiestos de títeres ya que no están equipados para manejar su caso de uso.

Un ejemplo sería:


exec { 'do veritas upgrade' :
  onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
  exec => 'freeze && stop && install && start && unfreeze && verify',
}

información relacionada