요리사 요리 책 버전을 관리하는 최상의 전략


10

요리사 요리 책 버전 관리에 대한 아이디어를 찾고 있습니다. 환경에서 특정 버전을 고정한다는 것을 알고 있지만 해결 방법을 잘 모르겠습니다.

우리는 타사 커뮤니티 북을 cookbooks 폴더에 설치하는 librarian-chef를 사용합니다. 우리는 그 책을 건드리지 않고 때때로 최신 버전으로 업데이트합니다.

또한 커뮤니티 사이트 ( include_recipe)를 포함하는 맞춤형 사이트 별 요리 책도 있습니다 .

이론적으로 우리는 사용자 정의 서적이 의존하는 특정 버전의 커뮤니티 서적을 지정한 다음 환경 구성에서 요리 책 버전을 설정할 수 있지만 문제는 해당 커뮤니티 서적이 지정된 버전이없는 다른 서적에 의존 할 수 있다는 것입니다. 그리고 그 깊은 중첩 된 의존성은 계속 될 수 있습니다.

따라서 요리 책을 요리사 서버에 업로드 할 때 종속 요리 책도 변경 될 수 있으므로 제품이 중단되지 않는다는 보장은 없습니다.

내가 지금 볼 수있는 유일한 솔루션은 커뮤니티 및 사용자 정의를 포함하여 환경 구성에서 사용하는 모든 요리 책 버전을 지정하는 것입니다. 그러나 각 요리 책을 살펴보고 해당 버전을 찾아야합니다.

우리는 또한 때때로 사서 요리사 업데이트를 수행하며, 변경된 버전을 추적하기가 어려워 질 수 있으며 시간이 오면 환경에서 버전을 업데이트하는 것을 잊지 않는 것이 좋습니다.

경험과 모범 사례를 공유하십시오. 나는 그것이 다른 사람들에게 매우 유용 할 것이라고 확신합니다.

답변:


11

요리사를 본격적으로 사용하기 시작한 지 얼마되지 않아서 같은 문제에 직면하게되었습니다. 운영 적으로 4 가지 일을 시작했을 때 나는 온전한 정신을 갖게되었습니다. 일부는 Chef 커뮤니티에서 "모범 사례"로 간주되지 않을 수 있습니다. 그럼에도 불구하고, 이것이 내가 세상에 정신, 반복성 및 질서를 가져 오는 방법입니다.

  1. 나만의 레시피를 만드십시오. 커뮤니티 쿡북 사용을 완전히 중단하고 제 사양에 따라 나만의 레시피를 만들었습니다. 이 방법으로 본인의 의존성을 관리하고 제어 할 수 있습니다. 많은 사람들이 이것에 반대하지만 솔직히-Opscode와 커뮤니티 레시피 중 일부를 먼저 읽었다면 Chef를 내 솔루션으로 시작하지 않았을 것입니다. 나는 레시피를 단순하고 일하는 방식에 따라 유지합니다. 저의 저장소에는 정확히 커뮤니티 요리 책이 없습니다.
  2. 업그레이드에 대해 훈련을받습니다. 레시피를 업데이트하면 모든 곳에서 작동하는지 확인하고 워크 플로우를 방해하고 마찰을 추가하더라도 모든 곳에서 배포하는 번거 로움을 겪습니다. 장기적으로 이것은 요리사 정신의 열쇠입니다. 극단적 인 경우 테스트 대 프로덕션 환경과 같은 일부 호스트에 변형이 필요한 경우 요리 책에 코드를 코딩합니다. 그러나 저의 철학은 모든 요리 책의 최신 버전이 필요한 모든 곳에 안전하게 적용될 수 있어야한다는 것입니다.
  3. 모든 것에 Chef Solo를 사용하십시오. 몇 달마다 나는 어떻게 든 Chef Server를 다시 사용해 봐야겠다고 생각합니다. Community Edition은 개선되고 있지만 전체 패러다임은 결코 내 세상에 맞지 않는 것 같습니다. 그리고 시도 할 때마다, 나는 얼굴을 마주보고 내 자신을 걷어차. Chef Server 패러다임은 시스템을 자주 변경해야하는 오래 지속되는 서버가있는 세계에 적합합니다. 시스템을 거의 변경하지 않아서 서버를 지속적으로 요리사 서버에 체크인하여 업데이트하는 것은 어리석은 일입니다. 그리고 저는 호스트가 건강하도록하기 위해 훨씬 더 좋은 도구를 가지고 있습니다. 저의 작업은 일회용 가상 머신의 세계에서 이루어졌으며 한두 가지 구성 변경에서만 살아남을 수 있습니다. 이제 Chef Solo를 독점적으로 사용하고 변경 사항을 호스트에게 푸시하면서 정확히 동일한 요리 책을 필요한 모든 호스트에게 푸시합니다.
  4. Chef 실행 중에 소프트웨어를 컴파일하지 마십시오. 나를위한 가장 극단적 인 (즉 바보 같은) 사례는 새 상자를 부트 스트랩 할 때마다 소스에서 루비 -1.9.3을 컴파일하는 것과 관련이 있습니다. 그러나 사용자 정의 패키지를 만드는 것은 종종 엉덩이에 고통을 줄 수 있습니다. 훌륭한 도구 fpm을 발견하면 내 rpm, debs 및 gem을 패키징하는 것이 쉽지 않아서 내 삶을 훨씬 효율적이고 쉽게 만들 수있었습니다.

이것이 누군가를 돕기를 바랍니다!

-업데이트-

거의 3 년 후,이 원칙들은 저에게 여전히 도움이되었습니다. 그러나 나는 조언을 하나 더 추가 할 것이고, 그것이 요리사보다 솔로를 선호하는 것과 같은 이유입니다.

  1. 인서트 사용

3

두 가지 문제가 있습니다.

  1. 다른 환경 객체에서 요리 책 버전 관리
  2. run_list 노드에서 레시피 버전 을 관리 하십시오.

쿡북 버전의 필수 기사요리 책 버전에 가장 적합한 참조입니다. # 1에 따르면, 다른 구성 세트를 제공하기 위해 다른 버전의 요리 책을 관리하는 것이 힘든 일이므로 특히 요리 책 사이트의 요리 책 대부분 이이 작업을 잘 수행하지 않는 요리 책 종속성과 혼합되어 있습니다. 따라서 구성이 중단 될 수 있습니다. 구성 요소의 런타임 동작을 테스트하여 버전을 관리하지 않으면 중단됩니다. 따라서 환경 객체에 버전 번호를 지정하지 않고 요리 책을 업로드하는 것은 좋지 않습니다. 따라서 환경 개체에서 요리 책 버전을 관리하고 새 요리 책 버전을 홍보 할 때 신중하게 테스트하십시오. 나는 보통 SCM에서 환경 객체를 관리하고 변경된 요리 책이 다른 기존 구성 요소와 잘 작동 할 때까지 자동화 된 작업을 통해 요리사 서버에 업로드하지 않았습니다.

# 2에 따르면, 실제 레시피 종속성이 각 노드에서 작동하는 곳이기 때문에 까다로운 주제입니다. 간단히 말해서 중요한 노드의 경우 노드 / 역할 실행 목록에서 레시피 버전을 지정하여 레시피의 종속성을보다 잘 제어 할 수 있습니다. 미세한 제어가 가능하고 테스트 / 프로모션에 더 많은 비용이 들기 때문에 나는 이것을 거의하지 않습니다. 그러나 중요한 역할 / 노드의 경우 이는 나쁜 생각이 아니라 구성 변경에 대한 보험을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.