2014-06-18 2 views
1

요리사 데이터 가방에서 값이 변경 될 때 뭔가를 할 수있는 방법이 있습니까?주방장 데이터 가방 변경시 무언가 수행

데이터 봉지가 이렇게 보입니다.

{ 
    "data": { 
     "version": "1.0.12-SNAPSHOT" 
    } 
} 

그것은이 변경 또는 변화의 자원을 '알림 서비스'에이 변경에 '구독'에 요리사 리소스가이

{ 
    "data": { 
     "version": "1.0.13" 
    } 
} 

할 수있는 방법을 변경?

+0

오픈 소스 요리사 서버 또는 엔터프라이즈 요리사를 사용하고 계십니까? – StephenKing

+0

나는 엔터프라이즈 요리사를 사용하고 있습니다. – tinytelly

+0

그럼 명확한 번호가 아닙니다. 엔터프라이즈 주방장의 데이터 가방 업로드와 같은 이벤트에서 이미 푸시 작업을 실행할 수 있는지 여부는 알 수 없습니다. 그러나 그런 [밀어 넣기 작업] (http://docs.opscode.com/push_jobs.html)은 chef-client를 시작할 수 있습니다. – StephenKing

답변

2

데이터 백의 변경을 구독하지만 변경 결과를 현명하게 처리하려면이 코드에 대한 일반적인 해결책은 이 아니며입니다.

거기에 설치할 소프트웨어의 버전을 설명하는 것 같습니다. 따라서, 합리적인 접근 방식은 각각의 요리사를 실행하는 동안 다음 단계를 수행하는 것입니다 :

소프트웨어의 현재 설치된 버전은 현재 데이터 가방
  • 일치하는 경우에 정의 된 것과 동일 체크하면
    • , 소프트웨어

    에게 그 방법을 업데이트 아무것도가 다른 경우

  • 을하지 않는다, 당신은 실제가 게시/아키텍처를 구독 그러나 다만 일반 요리사 실행하는 동안 모든 것을 처리 할 필요가 없습니다.

    사실,이 일반적인 접근법은 요리사가하는 모든 사업자가 현재 상태를 확인하고 조리법에서 정의한 의도 한 상태와 다른 경우 적용합니다.

  • +0

    나는 이것을 얻는다. 노드에 어떤 소프트웨어가 설치되어 있는지 확인하는 '요리사'방식이 있습니까? 아니면이를 수행하기 위해 자체 솔루션을 구워야합니까? 나는 버전으로 파일을 작성한 다음 그 내용을 읽는 것과 같은 것을 생각할 수있다. 또는 버전을 얻기 위해 프로세스를 grep하는 것 ... 둘 다 조금 문제가있다 .... 요리사 접근법이 있는지 궁금하다. ? – tinytelly

    +1

    "일반"패키지를 사용하여 소프트웨어를 설치하는 경우 Chef와 함께 제공되는 [package] (http://docs.opscode.com/resource_package.html) 리소스가 있습니다. 스스로 롤업하는 경우 버전이 디스크에 저장된 위치를 알고 해당 공급자를 작성해야합니다. 이것은 다소 고급입니다. –

    관련 문제