Puppet을 사용하여 자체 소프트웨어를 배포하시겠습니까?

Puppet을 사용하여 자체 소프트웨어를 배포하시겠습니까?

(이 질문의 어리 석음에 대해 미리 사과드립니다. 저는 일반적으로 시스템 관리자가 아닌 프로그래머이지만 일부 작업을 자동화하고 자동화되었지만 가장 예쁜 방식이 아닌 다른 작업을 정리하는 일을 맡았습니다. . :-)

저는 cfengine, Puppet 및 Chef와 같은 여러 서버에 대한 소프트웨어 배포를 자동화하기 위한 다양한 도구를 둘러보았습니다. 지금까지는 Puppet이 가장 매력적으로 보였지만 아직까지는 어떤 것도 약속하지 않았습니다.

이러한 도구는 모두 여러 서버를 최신 상태로 유지하는 데 훌륭한 역할을 할 수 있는 것처럼 보입니다.미리 포장된소프트웨어.

내가 이해하지 못하는 것은: Puppet과 같은 도구를 사용하여 자체 내부 소프트웨어 배포를 관리하는 방법은 무엇입니까? 나는 Apache를 유지하는 방법을 보여주는 수천 개의 튜토리얼을 보았기 때문에 당황한 것 같습니다 ensure => latest.~이다꽤 멋지네요), 하지만 오늘날 내 사용 사례와 완전히 일치하는 것은 없습니다. 이는 다음과 같습니다.

  1. 인간이 버튼을 누르면,
  2. 버전 제어 저장소 B에서 분기 A를 가져옵니다.
  3. C 명령을 실행하여 컴파일하십시오.
  4. 바이너리 D를 서버 E1부터 E10까지 복사합니다.
  5. 각 서버에서 F 명령을 실행하여 모든 변경 사항을 적용합니다.

Puppet은 훌륭하게 들리며 일부 쉘 스크립트에 비해 선언적, 멱등성 구성의 이점을 완전히 알고 있지만 "쉘 스크립트를 Puppet(또는 Chef 또는 cfengine)으로 업데이트하고 싶으므로 다음과 같은 방법을 따르십시오"에 대한 튜토리얼을 본 적이 없습니다. 해야 할 것". 그런 게 있나요? Puppet 문서에 제공된 내용을 사용하여 내가 원하는 동작을 복제하는 방법이 다른 사람들에게 분명합니까? 나만 이해가 안되는 걸까?

지금까지 나에게 들리는 것은 인간(#1)이 Puppet 외부의 소프트웨어(#2 및 #3)를 수동으로 패키징하고 Puppet 구성을 수동으로 업데이트하여 Puppet이 서버를 업데이트하도록 트리거한다는 것입니다. .. 아마도? (당신이 알 수 있듯이 나는 여기서 약간 혼란스러워합니다.)

감사해요!

답변1

우리는 꼭두각시를 사용하지만 애플리케이션 배포에는 사용하지 않습니다. 말씀하신 대로 소프트웨어를 debs 또는 rpm으로 패키징하고, 개인 저장소를 모든 곳에 구성하고, 꼭두각시를 사용하여 버전을 제어할 수 있지만 여전히 모든 서버에서 다음 30분 새로 고침을 기다려야 합니다.

내가 할 일(그리고 이것은 우리가 하는 일과 비슷하지만 우리는 레일을 사용하므로 컴파일 단계가 없습니다):

  • Puppet을 사용하여 애플리케이션 자체를 제외한 서버의 모든 것을 구성하십시오. 종속성, 웹 서버, 사용자, 경로 등
  • 자동화된 빌드 서버(bamboo, hudson, Cruise Control 등)가 컴파일된 아티팩트를 Nexus와 같은 저장소 관리자에 넣도록 하세요.
  • capistrano를 사용하여 서버에 빌드를 푸시하세요.

Chef에는 더 많은 실시간 푸시 기능이 있을 수 있습니다. 나는 그것에 대해별로 익숙하지 않습니다.

답변2

1~3단계는 일반적으로 빌드 프로세스에서 자동화됩니다. 일반적으로 이 프로세스의 출력은 테스트 주기를 거칩니다. 통합 테스트 환경에 배포할 수 있도록 출력을 패키징합니다. 통합 테스트를 통과한 경우에만 4단계와 5단계가 발생합니다.

5단계에서는 배포 중단을 의미합니다. Apache와 같은 경우 로그 회전 중에 종료하고 다시 시작하여 이를 처리할 수 있습니다. crontab 스크립트가 이를 처리할 수 있습니다. 한 시간 동안 롤링 변경 사항을 처리할 수 있거나 배포 단계 4에 다시 시작을 포함하는 경우 Puppet 또는 cfengine이 4단계에 적합한 도구입니다. 이는 통합 테스트가 통과되면 저장소를 업데이트하여 트리거될 수 있습니다.

답변3

꼭두각시 레시피를 검색하면 제작 준비가 완료된 수많은 스크립트를 찾을 수 있습니다. 예, 소프트웨어를 수동으로 패키지해야 합니다. 자신의 개인 저장소를 유지 관리하는 경우 verify=>latest 플래그를 사용할 수 있습니다. 그런 다음 Puppet에게 소프트웨어를 설치하도록 지시하는 레시피를 작성하세요. 레시피는 슬레이브에 전파될 마스터 서버에 배치되어야 합니다.

관련 정보