Computer >> 컴퓨터 >  >> 소프트웨어 >> 가상 기기

Vagrant 가상화 - 소개 가이드

인생이 지루하다고 생각하고 놀고 손볼 가상화 소프트웨어가 충분하지 않다면 오늘의 콘텐츠에 가장 만족할 것입니다. 가상화 배포 및 테스트용 래퍼 소프트웨어인 Vagrant 전용 기사입니다.

아이디어는 다음과 같습니다. 핵심 명령을 숨기고 통합 인터페이스를 제시한 다음 클라우드와 같은 일부 유행어를 연결하면 모두가 말하는 뜨거운 신기술이 됩니다. OpenStack, OpenShift, OpenCloud 및 기타 멋진 이름과 거의 같습니다. 실제로 PostgreSQL, Jenkins 및 Node.js와 같은 더 많은 이름 드롭퍼를 추가할 수 있다면 현대적이고 세련되고 멋진 것으로 추가 점수를 얻을 수 있습니다. 하지만 비꼬는 건 제쳐두고 이 도구가 무엇을 할 수 있는지, 어떤 용도, 가치 및 재미가 있는지 살펴보겠습니다.

단어가 매우 필요합니다

약간의 소개를 통해 컨텍스트를 제공합니다. Vagrant는 원래 혼합되고 빠른 환경에서 가상화 리소스의 소프트웨어 테스트, 개발 및 관리를 단순화하도록 설계되었습니다. 처음에는 업계에서 선택하는 하이퍼바이저가 아닌 VirtualBox에서만 작동할 수 있었지만 최근에는 이 프로그램이 VMware, KVM 및 기타 기술과 같은 다른 기술도 지원하며 몇 가지 훌륭한 통합 트릭이 함께 제공됩니다.

간단히 말해서 작업 방식은 기본 명령이 아닌 방랑 명령을 사용하는 것입니다. 여러 개의 하이퍼바이저가 있을 수 있으며 모두 서로 다른 구문을 사용하므로 일종의 오버헤드가 될 수 있습니다. 이것이 Vagrant를 사용하는 이유이며, 희망적으로 유연한 추상화 계층 뒤에 추악한 것을 숨깁니다. 하지만 지루한 말은 그만하고 우리의 손과 발을 통해 실제적으로 배워봅시다.

설정

좀 더 흥미롭게 만들기 위해 Linux에서는 시연하지 않겠습니다. 잠깐, w00t. 약간의 다양성을 추가하기 위해 Windows를 사용할 것입니다. 후속 기사에서 저를 믿으세요. 리눅스로 돌아갈 것입니다. 하지만 여기서는 개념적으로 별 차이가 없다는 것을 보여드리고 싶습니다.

그런 다음 모든 것이 흥분되고 Powershell 창을 열고 몇 가지 명령을 입력하기 시작합니다. 예를 들어 다음을 실행하여 Vagrant를 실행할 수 있습니다.

방랑하다

그러나 작업 환경을 준비하고 초기화하지 않은 경우 다소 보기 흉한 오류가 발생합니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe 위로
이를 실행하려면 Vagrant 환경 또는 대상 시스템이 필요합니다.
명령. 새로운 Vagrant 환경을 만들기 위해 `vagrant init`을 실행합니다. 또는 `vagrant global-status`에서 이 명령을 실행할 대상 머신의 ID를 가져옵니다. 마지막 옵션은 Vagrantfile이 있는 디렉토리로 변경하고 다시 시도하는 것입니다.

환경을 초기화한 후 본격적으로 작업을 시작할 수 있습니다.

그러나 다시 말하지만, 우리는 몇 가지 보기 흉한 오류와 씨름해야 합니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe 위로
'virtualbox' 공급자를 사용하여 시스템 '기본값'을 가져오는 중...
==> 기본값:'base' 상자를 찾을 수 없습니다. 찾아서 설치하는 중...
기본값:박스 공급자:virtualbox
기본값:박스 버전:>=0
==> 기본값:공급자를 위한 상자 'base'(v0) 추가:virtualbox
기본값:다운로드 중:기본
기본:
원격 파일을 다운로드하는 동안 오류가 발생했습니다. 오류
메시지가 있는 경우 아래에 재현됩니다. 이 오류를 수정하고 다시 시도하십시오.

/HashiCorp/Vagrant/bin/base 파일을 열 수 없습니다.
PS C:\HashiCorp\Vagrant\bin>

기본적으로 Vagrant의 Windows 버전은 기본 이미지에서 가상 머신을 시작하려고 시도합니다. 해당 이미지를 사용할 수 없으므로 미리 준비하지 않고 실행하면 up 명령이 실패하게 됩니다.

따라서 첫 번째는 일부 이미지를 가져오는 것입니다. Docker와 마찬가지로 Vagrant에는 기본 템플릿이 저장되는 자체 온라인 리포지토리가 있습니다. 운영 체제를 수동으로 가져와 설치할 수 있지만 앞서 언급한 추상화의 요점이 빠져 있습니다. 예를 들어 이미지를 가져옵니다.

vagrant box add hashicorp/base

존재하지 않는 이미지를 지정하면 더 많은 오류가 발생합니다:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe box add hashicorp/base
상자 'hashicorp/base'를 찾을 수 없거나 원격 카탈로그에서 액세스할 수 없습니다. HashiCorp Atlas의 개인 상자인 경우 `vagrant login`을 통해 로그인했는지 확인하십시오. 또한 이름을 다시 확인하십시오. 확장된
URL 및 오류 메시지는 다음과 같습니다.

URL:["https://atlas.hashicorp.com/hashicorp/base"]
오류:요청된 URL이 오류를 반환했습니다:404 찾을 수 없음

그러나 기본 이미지를 기대합니다. 이 문제가 발생하는 이유에 대한 다양한 온라인 참조가 있으며 구성 파일의 기본 선언으로 귀결됩니다. 사용 가능한 이미지 중 하나로 변경하여 다운로드하면 문제가 해결됩니다. 실제로 Vagrantfile에서 기본 항목을 편집해야 합니다. Vagrant를 시작할 때 문자열 기반을 기본 이미지로 사용하려는 것으로 바꾸십시오. 이것은 Ubuntu, Fedora, CoreOS 또는 그와 유사한 모든 것이 될 수 있습니다.

# 모든 Vagrant 개발 환경에는 상자가 필요합니다. https://atlas.hashicorp.com/search에서 상자를 검색할 수 있습니다.
config.vm.box ="기본"

연습을 위해 그리고 이에 대한 아주 좋은 미래의 이유가 있으므로 CoreOS 이미지(yungsang/coreos)의 다소 덜 명확한 선택을 테스트할 것입니다. 이미지를 잡습니다.

카탈로그에 실제로 추가되었는지 확인하십시오.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe 상자 목록
우분투/trusty64(가상 상자, 20150506.0.0)
yungsang/coreos (virtualbox, 1.3.8)

그런 다음 Vagrant를 다시 실행하십시오. 사용자 및 네트워크 설정과 기타 몇 가지 세부 정보를 포함하여 CoreOS가 시작됩니다. 잠시 후 시스템이 실행됩니다. 이제 SSH를 사용하여 호스트에 연결할 수 있습니다. 기본적으로 실행 중인 각 인스턴스에는 localhost의 포트가 할당됩니다. 우리의 경우 상자의 SSH 서비스는 127.0.0.1의 포트 2222에서 실행됩니다. 이것은 Docker에서 본 것과 매우 유사합니다. 다시 말하지만 저장소 개념인 네트워킹은 매우 동일합니다. 힌트, 그럴 만한 이유가 있습니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe 위로
'virtualbox' 공급자를 사용하여 시스템 '기본값'을 가져오는 중...
==> 기본값:베이스박스 '융상/코어오스' 가져오기...
==> 기본값:NAT 네트워킹을 위한 일치하는 MAC 주소...
==> 기본값:'yungsang/coreos' 상자가 최신인지 확인 중...
==> 기본값:VM 이름 설정:bin_default_1431611566870_38538
==> 기본값:이전에 설정한 네트워크 인터페이스를 지우는 중...
==> 기본값:구성에 따라 네트워크 인터페이스 준비 중...
기본값:어댑터 1:nat
==> 기본값:포워딩 포트...
기본값:22 => 2222(어댑터 1)
==> 기본값:'사전 부팅' VM 사용자 지정 실행 중...
==> 기본값:VM 부팅 중...
==> 기본값:컴퓨터가 부팅되기를 기다립니다. 이 작업은 몇 분 정도 걸릴 수 있습니다...
기본값:SSH 주소:127.0.0.1:2222
기본값:SSH 사용자 이름:core
기본값:SSH 인증 방법:개인 키
기본값:경고:연결 시간이 초과되었습니다. 재시도 중...
==> 기본값:머신이 부팅되고 준비되었습니다!

가상 머신에 연결

가상 머신이 실행 중입니다. 엄청난. 방랑자 상태를 확인할 수 있습니다:

vagrant ssh 또는 vagrant rdp 래퍼 명령을 사용하여 실행 중인 가상 머신에 들어갈 수 있습니다. 이 작업을 수행하는 다른 고급 방법이 있지만 네트워킹 및 클러스터에 중점을 둔 후속 자습서에서 논의할 것입니다.

Windows 클라이언트의 경우 RDP를 사용할 수 있지만 CoreOS 내에서 RDP를 사용할 수 없기 때문에 우리의 경우에는 작동하지 않습니다. VNC가 옵션인지 확실하지 않지만 아직 테스트해야 할 사항입니다. 마찬가지로 SSH는 Windows가 기본 SSH 에이전트와 함께 제공되지 않고 PuTTY가 설치되어 있는 경우 경로에 없을 수 있기 때문에 문제를 제기합니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe rdp 기본값
==> 기본값:RDP 정보 감지 중...
이 시스템에 대한 RDP 연결 정보를 찾을 수 없습니다.
감지되었습니다. 이것은 일반적으로 IP를 찾을 수 없을 때 발생합니다.
또는 RDP에 연결할 포트. 전달 중인지 확인하세요.
RDP 포트와 컴퓨터에 액세스할 수 있는지 확인합니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ssh 기본값 -- -A
%PATH% 변수의 디렉토리에서 `ssh` 실행 파일을 찾을 수 없습니다. SSH 클라이언트가 설치되어 있습니까? SSH 클라이언트가 포함된 Cygwin, MinGW 또는 Git을 설치해 보십시오. 또는 아래에 표시된 다음 인증 정보와 함께 선호하는 SSH 클라이언트를 사용하십시오.

호스트:127.0.0.1
포트:2222
사용자 이름:코어
개인 키:C:/Users//.vagrant.d/insecure_private_key

그런 다음 Windows에서 작업하는 경우 OpenSSH 키를 PuTTY 형식 또는 이와 유사한 형식으로 변환해야 합니다. 다시 말하지만, 대부분의 사람들이 Vagrant 모험에서 마주치게 될 것은 아니지만 유사한 문제가 다양한 방식으로 해결되는 것을 보는 것은 유용합니다.

이 시점에서 우리는 VirtualBox를 공급자로 사용하여 첫 번째 Vagrant VM 인스턴스를 성공적으로 시작했지만 테스트 중에 어디에서도 발생하지 않은 것입니다. 음, 일종의. 그러나 명시적인 VirtualBox 명령을 사용하거나 XML 파일 등에 대해 걱정할 필요가 없었습니다. 이것은 시작에 불과하지만 오늘 튜토리얼의 끝이기도 합니다. 우리는 높은 점수로 결론을 내립니다.

더 읽어보기

약간의 텍스트를 원하신다면:

Linux 저널 기사인 Vagrant 소개

Vagrant에 대한 단기 집중 과정

Docker 네트워킹 기능

결론

Vagrant는 흥미로운 개념처럼 보이지만 환경에서 문제를 해결하는 최선의 방법은 아닐 수 있습니다. 가상화를 진정으로 마스터하고 설정의 모든 사실을 제어해야 하는 경우 모든 것을 배우는 데 필요한 시간, 혈액 및 인내를 투자해야 합니다. 그렇지 않으면 문제가 발생했을 때 문제를 실제로 해결할 수 없으며 기술을 이해하거나 이해할 것입니다.

그러나 그것은 흥미로운 스핀이며 가상 여행에서 Vagrant를 얼마나 멀리 갈 수 있는지 아직 알 수 없습니다. 최소한 우리는 프로그램 설정 문제와 초기 구성을 처리하고 이미지를 가져와서 시작하는 방법을 배웠으며 몇 가지 기본 검사를 수행하고 네트워크 연결 문제를 해결했습니다. 꽤 유용합니다. VMware, LXC, libvirt, 고급 네트워킹, 클러스터 설정 등을 위한 연결 부분을 확장하는 매우 중요한 플러그인 프레임워크를 포함하여 더 많은 기능이 제공될 것입니다. 업데이트를 계속 지켜봐 주십시오.

건배.