Docker와 함께 Puppet을 사용해야 할 이유가 있습니까?


16

나는 얼마 전에 DevOps의 Ops 부분을 시도했지만 꽤 재미 있었지만 어떤 프로젝트에서도 시도해 볼 시간과 이유는 없었습니다. 그러나 지난주에 나는 새로운 프로젝트를 시작했다. 거기서 보스는 회사 프로젝트를위한 스테이징 환경과 같은 것을 만들기 위해 서버를 구성 할 수 있는지 물었다. 그와 함께 나는 프로젝트를 마이그레이션하는 것보다 더 많은 DevOps로 마이그레이션하는 것에 대해 생각하기 시작했습니다.

나는 훌륭하고 매우 쉬운 Docker와 함께 나왔습니다. 그러나 얼마 전에 Puppet을 사용하려고했기 때문에 "Puppet을 Docker와 함께 사용할 이유가 있습니까?"라는 질문이 떠 오릅니다. Docker는 Puppet이 할 수있는 모든 일을하지만 더 쉬운 방법으로하는 것처럼 보입니다.

PS 얼마 전 Hacker News에는 컨설 (Consul) 이있어 구성과 서비스가 훌륭하기 때문에 구성까지도 해결할 수 있습니다 (또한 구현도 고려하고 있습니다).

답변:


18

꼭두각시와 도커는 동일한 작업을 많이 수행 할 수 있지만 다른 방식으로 접근합니다.

Puppet은 파일 + 패키지 + 서비스를 관리합니다. (트리 펙타에게 전화). Docker는 컨테이너 내부의 바이너리 및 구성 파일을 캡슐화합니다.

이 글을 쓰는 시점에서 도커는 여전히 불안정하여 프로덕션 환경에서 사용해서는 안됩니다. 버전 1.0이 출시 될 때까지 많은 API가 변경 될 수 있습니다.

도 커가 안정적이더라도 모든 프로세스 및 구성 파일을 도커 컨테이너로 변환하는 것은 큰 일입니다.

반면, 꼭두각시 (Puppet)는 안정적인 제품이며 전체 도구 에코 시스템 (heira, mcollective, facter, razor)과 함께 제공됩니다. 이러한 도구는 문제가 발생할 염려없이 신속하게 구현할 수 있습니다.

다음 자료를 적극 추천합니다.

꼭두각시로 애플리케이션 스택을 관리하는 방법에 대한 비디오
https://www.youtube.com/watch?v=KSo_mcJxFIA

도커와 꼭두각시가 함께 작동하는 방법에 대한 팟 캐스트
http://devopscafe.org/show/2014/1/23/devops-cafe-episode-46.html

도커와 통합하는 방법에 대한 꼭두각시 블로그 기사
http://puppetlabs.com/blog/building-puppet-based-applications-inside-docker

퍼펫과도 커가 공존하는 또 다른 블로그 기사
http://puppetlabs.com/blog/can-containers-and-configuration-management-co-exist

docker와 상호 작용하기위한 꼭두각시 모듈
http://docs.docker.io/use/puppet/

devops의 용어에 대한 사소한 수정. Devops는 특정 도구보다 개발자와 운영이 협력 하는 소프트웨어 개발 방법론 입니다.

최신 정보

현재 우리 회사는 꼭두각시와 도커를 모두 사용합니다. 다음은 꼭두각시 대 도커를 사용하는 이유에 대한 꼭두각시 conf 2014에서 제공되는 훌륭한 프레젠테이션입니다. puppetlabs의 전 고용주이자 docker book의 저자 인 James Turnbull이 제공했습니다.

https://puppetlabs.com/presentations/using-docker-puppet-james-turnbull-kickstarter

또한 sysadmincasts.com에서 제공하는 docker에 대한 좋은 짧은 비디오 자습서

https://sysadmincasts.com/episodes/31-introduction-to-docker

도커 프로 :

  • 인스턴스를 빠르게 스핀 업할 수 있습니다
  • 꼭두각시보다 배우기 쉬움
  • 다운 타임을 쉽게 할 수 있습니다

도커 단점 :

  • devicemapper 백엔드 사용시 컨테이너에 10GB 제한이 있습니다.
  • 작은 구성 변경으로 컨테이너를 다시 빌드하는 데 시간이 오래 걸림
  • hub.docker.com, quay.io와 같은 도커 레지스트리를 사용하는 데 비용이 듭니다 (자체 호스팅 도커 레지스트리는 매우 버그가 많으며 GUI가 없습니다)
  • 적절한 초기화 시스템이 없습니다. 일부 응용 프로그램은 잘 재생되지 않습니다.
  • 네트워크를 세밀하게 제어 할 수 없음
  • 서브 쉘이 필요한 응용 프로그램 (RVM + 루비보기)은 제대로 작동하기가 매우 까다 롭습니다.
  • Windows 호스트를 관리 할 수없고 SLES 또는 기타 덜 인기있는 운영 체제가없는 경우
  • 현재 도커 오케스트레이션은 매우 젊습니다.
  • 현재 빌드 타임에 /etc/resolv.conf를 설정할 수 없습니다
  • 호스트 localtime 및 urandom 디렉토리에 매핑하기 위해 / etc / localtime 및 / dev / urandom을 마운트해야하는 다양한 버그
  • 성능이 빠르지는 않습니다 (도 커가 베어 메탈 속도의 99 % 여야한다는 주장에도 불구하고 때로는 다른 기계보다 30 % 느립니다).
  • 작은 컨테이너에는 여전히 수백 메가 바이트의 오버 헤드가 있습니다. 우리 컨테이너는 모두 몇 기가 바이트입니다.

꼭두각시 프로 :

  • 손쉬운 확장
  • 기존 서버 (Windows, Linux, sles)와 호환
  • 작은 변경을 빠르게
  • 다른 퍼펫 사용자 및 모듈로 구성된 강력한 커뮤니티
  • 모든 플랫폼에 패키지를 설치하기위한 표준화 된 API

꼭두각시 단점 :

  • 대규모 인프라는 매우 복잡해집니다
  • 조건부 모듈 종속성으로 spagetti 코드 생성
  • 더 무거운 무게

현재 퍼펫을 사용하여 도커 컨테이너를 제공합니다. 도커 컨테이너는 젠킨스 빌드에 사용되며 각 빌드 후에 파괴됩니다. 잘 작동하고 일관된 환경을 제공합니다. 즉, 코드를 한 번만 작성한 다음 우분투, sles 및 centos 시스템을 모두 다시 빌드해야합니다. 컨테이너를 재 구축하는 데 약 15 ~ 30 분이 걸리며 여전히 수동 프로세스입니다. Docker는 빠른 테스트 VM을 회전시키는 데 유용합니다.

즉, 퍼펫은 기존 인프라를 관리하는 데 탁월합니다. Docker는 소규모 임시 인스턴스로 묶을 수있는 기술 스택이있는 100 % Linux의 그린 필드가있는 경우 좋습니다. 일부 기능이 겹치지 만 상호 배타적이지는 않습니다.


5
나는이 대답이 주관적이고 투기 적이라는 것을 알았다. Docker가 높은 수준에서 동일한 목적을 위해 더 간단한 도구로 나타날 때 Docker와 함께 / Puppet을 계속 사용하는 이유에 대해 실제로 대답하지는 않습니다.
8bitjunkie

1
@ 7SpecialGems 더 많은 사실로 업데이트되었습니다.
spuder

1
세계에서 2,015 어떻게 상황이 변경이 답변의 리뷰를보고 좋은 것
올리버 베이 즈 - 쉘튼

2019 년에도 질문 / 답변이 상대적입니까? 무엇을 바꿀 수 있었습니까?
Md. Abu Taher

2

Docker는 컨테이너를 프로비저닝하고 초기에 구성하는 데 도움이되지만 컨테이너를 초기화 할 때 일회용 명령을 실행합니다.

Puppet은 데몬으로 실행할 때 가장 강력하며 구성 을 지정한대로 유지 하므로 예를 들어 서비스 실행이 중지되면 다시 시작됩니다.

꼭두각시 구성 매니페스트에 대한 가장 좋은 점 중 하나는 of 등원 이라는 것입니다 . 그것은 당신이 원하는 상태를 묘사해야하며 거기에 도달하는 단계는 아닙니다.

또한 구성을 추상화하고 매개 변수화 할 수 있으며 한 서버 또는 컨테이너에서 작성된 매개 변수내보내고 다른 서버에서 사용할 수 있습니다 (예 : 모니터링 애플리케이션의 노드 호스트 이름 목록 수집).

나는 그들이 분명히 다르지만 관련된 목적으로 봉사한다고 말하고 싶습니다. 현재 기존 꼭두각시 매니페스트를 사용하여 컨테이너 구성을 시작하여 개발 환경이 프로덕션 환경과 더 비슷해 지려고합니다.

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