Certifique-se de que o Puppet execute etapas processuais como parte da implantação

Certifique-se de que o Puppet execute etapas processuais como parte da implantação

Eu sei que o uso de etapas procedimentais no Puppet geralmente é desaprovado, mas como o estamos usando para implantar aplicativos em cluster gerenciados pela Veritas, há um conjunto específico de etapas que devem ocorrer antes que a instalação do rpm seja chamada.

Atualmente, congelamos manualmente o cluster Veritas para que ele não tente fazer failover do aplicativo, executamos o Puppet, que instala o RPM (desativando o aplicativo, se necessário), e o Puppet é instruído a não iniciar o aplicativo. Em seguida, iniciamos manualmente o aplicativo e descongelamos o Veritas. Finalmente, verificamos o status.

Gostaria de automatizar essas etapas do Veritas, para que só precisemos executar o Puppet. Essas etapas são realizadas apenas em nosso ambiente de produção. Para todos os outros, só precisamos chamar a instalação do RPM. Para complicar as coisas, não quero executar nenhuma dessas etapas se nada tiver mudado.

Qual é a maneira preferida de fazer algo assim? Eu estava lendo sobreExecutar etapas, mas parece que isso exigiria uma refatoração significativa do meu código existente.

Gostaria de saber se alguém poderia me dar algumas idéias sobre como lidar com isso.

Responder1

Com base na sua descrição do problema, você precisa usar planos ou colocar tudo em um executivo ou script para poder especificar a ordem das coisas. O Puppet se manifesta porque não está equipado para lidar com seu caso de uso.

Um exemplo seria:


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

informação relacionada