Vagrant, Docker, Chef 및 OpenStack (또는 유사한 제품)의 관계는 무엇입니까?


56

저는 웹 개발자이지만 몇 가지 관리 작업에도 관심이 있습니다. 따라서 순수한 관리에서 개발 조직으로의 새로운 이동이 편리합니다.

어쨌든, 나는 관계를 맺는 데 몇 가지 문제가 있습니다. 어쩌면 아무것도 없기 때문에 명확히하기 위해 도움을 요청하고 싶었습니다.

기본적으로, 내가 관계를 맺고 싶은 것은 (내 이해에서) 네 가지 유형의 소프트웨어입니다. 정확한 제품은 중요하지 않습니다. 비슷한 소프트웨어를 대안으로 사용할 수 있습니다.

  • 방랑자 : VM의 생성 및 관리를 자동화하는 것이 제 이해입니다. VM 설정, 시작 및 중지. 이는 로컬 VM 또는 원격 (예 : 클라우드 플랫폼)을 사용하여 수행 할 수 있습니다.
  • Docker : 몇 가지 Linux 커널 개념을 기반으로하는 "경량 VM". 예를 들어 공유 웹 호스팅 환경에서 프로세스를 독립적으로 실행하는 데 사용할 수 있습니다.
  • Chef : VM과 같은 운영 체제를 설정하고 구성하는 도구입니다.
  • OpenStack : 프라이빗 클라우드를 구축 할 수있는 툴로 AWS와 같은 툴과 비슷합니다.

질문 # 1 : 내 설명이 맞습니까? 아니면 이러한 소비 중 일부 (또는 전부)에 문제가 있습니까?

질문 # 2 : 모든 도구를 어떻게 혼합 할 수 있습니까? 말이 되겠니?

내 상상력과 내 이해의 관점에서, 당신은 갈 수 있고

  • OpenStack을 사용하여 고유 한 클라우드 구축
  • Vagrant를 사용하여 클라우드에서 실행되는 VM을 관리하고
  • Chef를 사용하여이 VM을 설정하십시오.
  • 마지막으로 Docker를 사용하여 VM 내부에서 프로세스를 실행하십시오.

이 올바른지? 그렇다면,이 모든 것을 사용하는 방법에 대한 조언을 제공해 주시겠습니까?


1
이것에 완전히 대답 할만큼 숙련되지는 않았지만, Vagrant and Chef에 대한 귀하의 평가는 맞습니다. 개발 상자에서 Vagrant를 사용하여 VM을 스핀 업 한 다음 Chef로 프로비저닝하면 실제로 작동합니다.
GSP

답변:


54

각각의 웹 페이지를 사용하여 이러한 모든 프로젝트가 무엇인지 알아 봅시다. 그래도 나열한 순서를 변경하겠습니다.

  • Chef : Chef는 인프라를 코드로 변환하는 자동화 플랫폼입니다.

    이것은 구성 관리 소프트웨어 입니다. 대부분의 경우 동일한 패러다임을 사용합니다. 구성 파일, 설치된 소프트웨어, 사용자, 그룹 및 기타 여러 리소스 유형과 관련하여 머신이 원하는 상태 를 정의 할 수 있습니다. 또한 대부분의 시스템은 일반적으로 오케스트레이션 이라고하는 프로세스 인 특정 시스템으로 변경 사항을 푸시하는 기능을 제공합니다 .

  • Vagrant : 가볍고 재현 가능한 휴대용 개발 환경을 만들고 구성하십시오.

    Oracle VirtualBox 또는 VMWare 기술을 공급자 로 사용하여 완전히 가상화 된 시스템 을 생성 할 수있는 재현 가능한 방법을 제공 합니다. Vagrant는 구성 관리 소프트웨어와 조정하여 운영 체제 설치 관리자가 완료되는 설치 프로세스를 계속할 수 있습니다. 이를 프로비저닝이라고 합니다.

  • Docker : 모든 응용 프로그램을 경량 컨테이너로 포장, 배송 및 실행하는 오픈 소스 프로젝트

    이 소프트웨어의 기능은 운영 체제 설치를 정의하는 수단을 제공하는 Vagrant의 기능과 다소 중복되지만이 목적에 사용되는 기술은 크게 다릅니다. Docker는 Linux 컨테이너를 사용합니다. Linux 컨테이너 는 가상 머신 자체가 아니라 격리 된 파일 시스템에서 실행되는 격리 된 프로세스입니다. Docker는 구성 관리 시스템 을 사용 하여 컨테이너를 프로비저닝 할 수도 있습니다 .

  • OpenStack : 프라이빗 및 퍼블릭 클라우드 구축을위한 오픈 소스 소프트웨어.

    OpenStack 을 단일 시스템에 배포 할 수있는 것은 사실이지만 이러한 배포는 순전히 개념 증명을위한 것이며 리소스 제약으로 인해 그다지 작동하지 않을 수 있습니다.

    OpenStack 설치의 주요 대상은 베어 메탈 멀티 노드 환경이며, 다른 구성 요소 를 전용 하드웨어에서 사용하여 더 나은 결과를 얻을 수 있습니다.

    OpenStack의 주요 기능은 완전 가상화 (VirtualBox, VMWare)에서 반 가상화 (KVM / Qemu), 컨테이너 (LXC) 및 사용자 모드 Linux (UML)에 이르기까지 많은 가상화 기술을 지원한다는 것입니다 .

이러한 제품을 특정 아키텍처의 구성 요소로 제시하려고 노력했습니다. 필자의 관점에서는 먼저 필요한 환경 (Chef, Puppet, Ansible 등)과 관련하여 요구 사항을 정의한 다음 제어 된 방식 (Vagrant, Docker)으로 배포 할 수있는 것이 합리적입니다. , ...) 마지막으로 필요한 경우 전역 크기로 확장하십시오.

이 기능 중 필요한 정도는 프로젝트 범위에서 정의해야합니다.

또한 대부분의 모든 기술적 설명을 지나치게 단순화했습니다. 자세한 정보는 참조 링크를 사용하십시오.


있는 요리사꼭두각시 같은 도구? 나는 그들이 동등하다는 것을 의미합니까? Windows 10 호스트에서이 도구를 실행하려면 어떤 도구를 사용 하시겠습니까?
ReynierPM

꼭두각시는 Chef와 비슷한 도구입니다. Windows에서 더 나은지 확실하지 않습니다.
Adeerlike

3

나는 개발자 배경에서 오는 것이 실제로 '더 까다로운'것이 될 것이라고 생각합니다. 질문은 거의 3 세이므로 여행을 찾는 방법을 듣는 것이 흥미로울 것입니다. 위에서 언급 한 응용 프로그램에 대한 sys 관리자와 희망적으로 약간의 빛을 비추거나 기술적 인 비 관점을 제시하여 사람 (관리자 또는 개발자)이 왜 당신이 요청한 것을 고려했는지 설명하는 데 도움이 될 것입니다. x, y, z의 관계는 이러한 도구가 부품의 합보다 클 수 있습니까?

실제로 sys 관리자는 여기에 우위가 있다고 생각합니다. 귀하의 질문에 언급 한 대부분의 응용 프로그램은 관리자 '문제'를 해결하고보다 추상적 인 데이터 센터 환경을 제공하며 이는 개발자와 새로운 ' devops의 전략 (전략 / 팀 읽기, devops는 사람이 아님). 그렇다면 언급 한 앱과의 관계는 무엇입니까? 이것이 어떻게 IT 서비스에 대한 전체적인 접근을 제공합니까?

OpenStack : 프라이빗 클라우드를 구축 할 수있는 툴로 AWS와 같은 툴과 비교 가능

그것이 무엇입니까,하지만 무엇을합니까? -가장 적절하게 명명 된 운영 체제는 DOS였습니다. BIOS를 추상화하여 디스크를 작동 시켰으며 OpenStack은 데이터 센터를 운영하고 인프라를 추상화합니다 (IaaS-데이터 센터 운영 체제의 전문 용어 임). 이제 데이터 센터에 API, 명령 구문 및 GUI가 있으며 OpenStack은 하이퍼 바이저, 스위치, 라우터, 방화벽, 스토리지 영역 네트워크,로드 밸런서, 도커 호스트 등을 구동 할 수 있습니다. OpenStack은 하드웨어 제조업체의 '플러그인' 또는 특정 기능을 사용합니다. 소프트웨어가 무언가를 정의함에 따라 소프트웨어에만 존재할 수 있다또는 네트워크 기능 가상화. 이 OpenStack과 다른 모든 클라우드 외에도 오케스트레이션 엔진에 던지는 스크립트를 읽거나 규칙 (스케일 확대, 축소 등)에 따라 트리거되는 스크립트를 읽음으로써 자체 인프라를 오케스트레이션 할 수 있습니다. 그래서 OpenStack은 추상화의 거대한 계층 내가, 내가 가지고있는 스위치 케어 나에게 네트워크를 제공하지 않습니다 예를 들어, 인 , 균형 잡힌 나에게 공개 HA, 자동 스케일링 복잡한 부하를 구축, 명령, 또는 도메인 이름, 저장 등록 첨부 꼬추 - 내가 인터넷에서 발견이 스크립트.

Docker : 몇 가지 Linux 커널 개념을 기반으로하는 "경량 VM". 예를 들어 공유 웹 호스팅 환경에서 프로세스를 독립적으로 실행하는 데 사용할 수 있습니다.

Docker는 추상화의 또 다른 계층이며 클라우드가 파괴적인 기술인 것처럼 소프트웨어 종속성, 업그레이드, 데이터 격리 및 순전 한 이식성과 같은 많은 운영상의 '문제'를 해결하기 때문에 업계를 변화시키고 있습니다. Java는 개발자가 생각할 필요가없는 소스 코드 이식성으로 인해 대중화되었습니다. JVM을 실행하면 Java를 지원하는 한 커피 머신에서 코드를 실행해야합니다. 도커는 비슷한 문제를 해결하고 내 앱을 실행하려면 도커 호스트가 필요 하지 않습니다.,이 버전의 파이썬,이 커널,이 리눅스 배포판 등이 필요하지만 앱에는 여전히 이러한 종속성이 있지만 기본 호스트는 신경 쓰지 않으며 관리자는 격리 된 컨테이너 내부에서 수행하는 작업을 신경 쓰지 않습니다 ( 포인트). Docker는 개발 및 운영 패러다임을 모두 바꾸어 전체 운영 체제와 바이너리와 같은 서비스를 처리합니다. 우리는 저장소에서 가져 와서 버전을 지정하고 수정하고 매개 변수로 실행할 수 있습니다.

Chef : VM과 같은 운영 체제를 설정하고 구성하는 도구입니다.

그렇습니다. 처음 두 사람만큼 혼란 스럽지는 않지만 Chef, puppet, ansible, salt, 시스템 센터 운영 관리자 및이 공간의 수많은 다른 응용 프로그램은 개발자와 관리자가 배포, 업그레이드 및 기타 작업을 모델링 할 수있는 방법을 제공합니다 (config 클라우드에 대한 것처럼 이러한 노력을 검토하는 표준 기관이없는 것 같습니다 . 그러나 우리는 인프라와 같이 결정적인 것을 다루지 않기 때문에 배우는 것이 더 고통스럽고 서로간에 양도 할 수는 없습니다.

방랑자 : VM의 생성 및 관리를 자동화하는 것이 제 이해입니다. VM 설정, 시작 및 중지. 이는 로컬 VM 또는 원격 (예 : 클라우드 플랫폼)을 사용하여 수행 할 수 있습니다.

이것은 언급 한 응용 프로그램 목록에서 이상한 것입니다 .Vagrant는 개발자를위한 도구이며 관리자를위한 장난감입니다. 예를 들어 방랑자와 함께 개발 환경을 신속하게 구축 할 수 있습니다. 예를 들어 Android 앱을 개발하고 IDE를 가져옵니다. 방랑자, 나는 그것이 Docker에 의해 곧 추월 될 것이라고 생각합니다.

이 모든 것을 사용하기 시작하는 방법에 대한 조언을 줄 수 있습니까?

이것이 바로 관리자가 우위에 있다고 생각하는 이유입니다. 수동으로 대부분의 작업을 수행하고 잘못 될 수있는 사항을 알고 있어야합니다. 꼭두각시 매니페스트, 클라우드 컴퓨팅 및 도커 오케스트레이션이 더 쉬워 질 것입니다. 개발자는 많은 접선을 사용하므로 잠재적 인 실무자에 대한 조언은 먼저 관리자가되는 것입니다.


0

방금 Vagrant 인스턴스 내에서 Chef 서버를 사용하는 OpenStack 배포 프로젝트를 완료했습니다. https://github.com/bluechiptek/bluechipstack/blob/master/README.md

이 방법을 사용하는 주요 문제는 노드를 관리하려고 할 때마다 Vagrant 인스턴스에 동일한 IP를 얻는 것입니다. 정적 주소 지정을 수행하면 잘 작동합니다. VPN을 통해하는 것이 이상적이지 않습니다.


0

결국 Vagrant와 Docker의 조합 만 사용하고 있습니다.

나는 기계를 프로비저닝하기 위해 vagrant를 사용합니다 ( 추가 클라우드 공급자가 있지만 내장 VirtualBox를 사용하고 있습니다.이 접근법을 사용하고 있기 때문에 외부 네트워킹 및 스토리지는 거의 수동이지만 vagrant-aws 플러그인 과 같은 것을 사용 하면 필요한 부분을 프로비저닝하도록 AWS에 지시하십시오.

내가 사용하는 프로비저닝 스크립트는 docker swarm join토큰 과 함께 CSR에 서명하는 데 사용되는 CA 인증서 및 키가 포함 된 안전한 위치를 가리 킵니다 . 또한 docker-engine을 설치하고 swarm에 가입하도록 구성합니다 (없는 경우 초기화).

일단 해결되면 docker stack deploy로컬 컴퓨터 또는 빌드 상자에서 간단하게 필요한 것을 모두 사용하여 스택을 배포합니다.

제 경우에는 그냥 떨어 요리사를 바로 할 간단한 설치 후 스크립트 사용에 찬성 yum또는 apt-get내 프로비저닝 스크립트로합니다.

또한 vagrant-triggers 플러그인을 사용하여 파괴하기 전에 스크립팅을 추가합니다 (제 경우에는 떼를 떠나기 위해).

Vagrant로 중앙 집중화의 좋은 부분은 다른 시스템이나 단일 컴퓨터에서 환경을 복제하여 개발을 위해 provider섹션 을 추가하거나 변경해야한다는 것 입니다. VirtualBox를 관리하기 위해 단일 컴퓨터에서 OpenStack을 설정하지 않았습니다.

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