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.