Puppet에서 절차적 단계를 사용하는 것이 일반적으로 눈살을 찌푸리게 한다는 것을 알고 있지만 Veritas에서 관리하는 클러스터 애플리케이션을 배포하는 데 이를 사용하고 있으므로 rpm 설치가 호출되기 전에 수행해야 하는 특정 단계 집합이 있습니다.
현재 우리는 애플리케이션 장애 조치를 시도하지 않도록 Veritas 클러스터를 수동으로 고정하고 RPM을 설치하는 Puppet을 실행하며(필요한 경우 애플리케이션을 종료함) Puppet은 애플리케이션을 시작하지 않도록 지시합니다. 그런 다음 수동으로 애플리케이션을 시작하고 Veritas를 고정 해제합니다. 마지막으로 상태를 확인합니다.
Veritas 단계를 자동화하여 Puppet만 실행하고 싶습니다. 이러한 단계는 프로덕션 환경에서만 수행됩니다. 다른 모든 경우에는 RPM 설치를 호출하기만 하면 됩니다. 설상가상으로, 변경된 사항이 없으면 이 단계를 수행하고 싶지 않습니다.
이와 같은 작업을 수행하는 데 선호되는 방법은 무엇입니까? 나는 대략 읽고 있었다스테이지 실행, 그러나 기존 코드에 대한 상당한 리팩터링이 필요한 것 같습니다.
누군가 나에게 이 문제를 처리하는 방법에 대한 몇 가지 아이디어를 줄 수 있는지 궁금합니다.
답변1
문제에 대한 설명을 기반으로 계획을 사용하거나 모든 것을 exec 또는 스크립트에 넣어서 순서를 지정할 수 있습니다. Puppet은 사용 사례를 처리할 수 있는 장비가 없기 때문에 나타납니다.
예를 들면 다음과 같습니다.
exec { 'do veritas upgrade' :
onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
exec => 'freeze && stop && install && start && unfreeze && verify',
}