2016-06-29 2 views
0

차별 배포를 수행하기 위해 경비원을 프로그래밍하는 방법에 대한 몇 가지 예를 찾고 있습니다. 내 전체 응용 프로그램으로 exe1, exe2, sql1, sql2 있다고 가정합니다. 전체 응용 프로그램을 배포하는 단계가 포함 된 완전한 요리 책을 만듭니다. 내 서버에 배포하십시오.Windows 용 요리사, Gaurd 변경 사항 배포 용 예제

그런 다음 sql2를 변경합니다. 나는 요리 책을 수정하고 그것을 업로드한다. 완전한 요리 책은 서버까지 올라간다. 이제는 요리사가 sql2에만 필요한 배포 단계를 수행하도록하겠습니다. 주방장이 자동으로 처리하나요? 경비원이 쓰여진 예를 봅니다. 설치가 아닌 경우 DB 인스턴스가 존재하는지 확인하십시오. 파일 변경 사항을 확인하고 변경 사항에 대해서만 배포 할 수있는 것과 비슷한 가드를 작성해야합니까? 모범 사례는 무엇입니까?

답변

0

대부분의 요리사 자원 (및 다른 현대적인 CM 도구의 유사한 구조)은 원하는 종료 상태에 도달하는 데 필요한 모든 조치 만 취하는 "멱등 원"입니다. 예를 들어, template 리소스가 있고 내용이 이미 정확하다면 업데이트되지 않습니다. 일부 리소스는 본질적으로 스스로 멱등수 일 수 없으며 대부분 execute 및 친구이므로 멱수를 직접 확인하기 위해 추가 체크를 작성할 수 있습니다.

+0

요리사 자습서의 예제를 보면 이는 사실이 아닌 것 같습니다. 예는 자신이 직접 작성해야하는 수표로 흩어져 있습니다. 설치되지 않은 경우에만 IIS를 설치하는 것처럼 DB가 만들어지지 않으면 DB를 만듭니다. 나는 예제가 멱등수를 프로그램해야한다는 것을 설명하기 위해 작성되었다고 가정한다. – Amit

+0

멱등 원 (idempotent)은 동일한 작업을 여러 번 수행해도 상태/결과 등이 변경되지 않는다는 것을 분명히해야합니다. 실행중인 서버에서 DB를 재배포하는 것은 분명히 멱등 원 (idempotent)이 될 수 없습니다. 서버에 데이터가없는 경우가 아니면 유사하게 일부 스크립트는 상태/결과를 변경하지 않고 반복해서 실행할 수 없습니다. 요리사의 사례는 적절한 경호원을 어떻게 배치해야 하는지를 분명하게 보여주고 통증을 느낍니다. – Amit

+0

많은 자습서는 특히 훌륭한 요리사 코드를 제작하는 것이 아닙니다. IIS를 설치하는 데 사용되는'windows_feature' 리소스는 레지스트리에 설치된 기능 목록을 검사하여 각 컨버전에서 설치를 실행해야하는지 확인하기 때문에 내부적으로 이미 멱등합니다. 앞에서 말했듯이 일부 리소스는 멱등수가 아니므로 직접 가드를 작성하거나 실행중인 명령이 멱등수가되도록해야합니다. – coderanger