কম্পিউটার টিউটোরিয়াল

Vagrant 가상화 마스터하기: 종합 입문 가이드

만약 당신이 인생이 지루하다고 생각하고, 가지고 놀고 만지작거릴 충분한 가상화 소프트웨어가 없다고 생각한다면, 오늘의 콘텐츠에 매우 기뻐할 것입니다. Vagrant에 전념하는 전체 기사, 가상화 배포 및 테스트를 위한 래퍼 소프트웨어.

아이디어는 다음과 같습니다: 지저분한 세부 명령들을 숨기고 통합된 인터페이스를 제시한 다음, 클라우드 같은 유행어들을 엮어 넣으면, 모두가 이야기하는 핫한 새로운 기술이 됩니다. OpenStack, OpenShift, OpenCloud, 그리고 다른 화려한 이름들과 매우 비슷합니다. 사실, PostgreSQL, Jenkins, Node.js 같은 더 많은 이름 떨구기들을 추가하면, 현대적이고 힙하고 쿨하다는 것으로 추가 점수를 얻습니다. 하지만 모든 빈정거림을 제쳐두고, 이 도구가 무엇을 할 수 있는지, 그리고 그것이 어떤 쓸모, 가치, 재미가 있는지 봅시다.

단어들은 매우 필요하다

약간의 소개, 당신에게 맥락을 주기 위해. Vagrant는 원래 혼합되고 빠른 환경에서 소프트웨어 테스트, 개발, 가상화 리소스 관리를 단순화하기 위해 설계되었습니다. 처음에는 VirtualBox에서만 작동할 수 있었는데, 이는 업계에서 정확하게 선택된 하이퍼바이저는 아니지만, 최근에는 VMware, KVM 및 기타 기술들도 지원하며, 몇 가지 멋진 통합 트릭들도 함께 제공됩니다.

한마디로, 작동 원리는 네이티브 명령어 대신 vagrant 명령어를 사용하는 것입니다. 여러 하이퍼바이저가 있을 수 있고, उन 모두는 다른 문법을 가지는데, 이는 일종의 오버헤드가 될 수 있습니다. 이것이 당신이 Vagrant를 사용하는 이유이며, 지저분한 것들을 희망적으로 유연한 추상화 계층 뒤에 숨기는 것입니다. 하지만 지루한 단어들은 그만, 실용적으로 손과 발로 배워봅시다.

설정하기

더 흥미롭게 만들기 위해, 저는 이걸 리눅스에서 시연하지 **않을** 겁니다. 잠깐, 우와. 우리는 윈도우를 사용할 겁니다, 그냥 다양성을 조금 추가하기 위해. 후속 기사들에서, 믿으세요, 많이 있을 겁니다, 우리는 리눅스로 돌아갈 거지만, 여기서는 개념적으로 정말 차이가 없다는 것을 보여주고 싶습니다.

그런 다음, 신나서 파워쉘 창을 열고, 몇 가지 명령어를 입력하기 시작합니다. 예를 들어, Vagrant를 실행하고 싶을 수 있는데, 이는 다음을 실행함으로써 수행됩니다:

vagrant up

그러나 작업 환경을 준비하고 초기화하지 않았다면, 꽤 추한 에러들을 보게 될 것입니다:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or, get an ID of a target machine from `vagrant global-status` to run this command on. A final option is to change to a directory with a Vagrantfile and to try again.

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

하지만 다시, 우리는 몇 가지 추한 에러들과 맞서야 합니다:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'base' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Adding box 'base' (v0) for provider: virtualbox
default: Downloading: base
default:
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try again.

Couldn't open file /HashiCorp/Vagrant/bin/base
PS C:\HashiCorp\Vagrant\bin>

기본적으로, Vagrant의 윈도우 버전은 베이스 이미지에서 가상 머신을 시작하려고 시도합니다. 그 이미지는 사용할 수 없기 때문에, 사전 준비 없이 up 명령어를 실행하면 실패할 것입니다.

따라서 첫 번째 일은 이미지들을 가져오는 것입니다. Docker처럼, Vagrant는 기본 템플릿들이 저장된 자체 온라인 저장소를 가지고 있습니다. 운영 체제를 수동으로 가져와 설치할 수 있지만, 그것은 앞서 말한 추상화의 요점을 놓치는 것입니다. 이미지를 하나 가져와 봅시다, 예를 들어:

vagrant box add hashicorp/base

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

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe box add hashicorp/base
The box 'hashicorp/base' could not be found or could not be accessed in the remote catalog. If this is a private box on HashiCorp's Atlas, please verify you're logged in via `vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:

URL: ["https://atlas.hashicorp.com/hashicorp/base"]
Error: The requested URL returned error: 404 Not Found

하지만 베이스 이미지는 기대합니다. 이 문제가 왜 발생하는지에 대한 다양한 온라인 참조들이 있으며, 이는 구성 파일의 기본 선언으로 귀결됩니다. 사용 가능한 이미지 중 하나로 변경하고 다운로드하면 문제가 해결됩니다. 실제로, Vagrantfile에서 기본 엔트리를 편집해야 합니다. Vagrant를 시작할 때 기본 이미지로 사용하고 싶은 것으로 base 문자열을 대체하세요. 이것은 Ubuntu, Fedora, CoreOS, 또는 그런 종류 어떤 것이든 될 수 있습니다.

# Every Vagrant development environment requires a box. You can search for boxes at https://atlas.hashicorp.com/search.
config.vm.box = "base"

우리의 연습을 위해, 그리고 이것에는 매우 좋은 미래의 이유가 있습니다, 우리는 다소 덜 명백한 CoreOS 이미지(yungsang/coreos) 선택을 테스트할 것입니다. 이미지를 가져오세요.

실제로 카탈로그에 추가되었는지 확인하세요:

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe box list
ubuntu/trusty64 (virtualbox, 20150506.0.0)
yungsang/coreos (virtualbox, 1.3.8)

그런 다음 Vagrant를 다시 실행하세요. CoreOS가 시작될 것이고, 사용자 및 네트워크 설정, 그리고 몇 가지 다른 세부 사항들을 포함합니다. 잠시 후, 시스템이 실행될 것입니다. 이제 SSH를 사용하여 호스트에 연결해 보십시오. 기본적으로, 각 실행 중인 인스턴스는 로컬호스트의 포트에 할당될 것입니다. 우리의 경우, 우리 박스의 SSH 서비스는 127.0.0.1의 2222 포트에서 실행되고 있습니다. 이것은 우리가 Docker에서 본 것과 매우 유사합니다. 다시, 레포 개념, 네트워킹, 매우 동일합니다. 힌트, 이것에는 좋은 이유가 있습니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'yungsang/coreos'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'yungsang/coreos' is up to date...
==> default: Setting the name of the VM: bin_default_1431611566870_38538
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: core
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!

가상 머신에 연결하기

우리의 가상 머신이 실행 중입니다. 훌륭합니다. vagrant status로 확인할 수 있습니다:

vagrant ssh 또는 vagrant rdp 래퍼 명령어를 사용하여 실행 중인 가상 머신 내부로 들어갈 수 있습니다. 이것을 하는 다른 더 진보된 방법들도 있지만, 우리는 네트워킹과 클러스터에 초점을 맞춘 후속 튜토리얼에서 그것을 논의할 것입니다.

윈도우 클라이언트의 경우, RDP를 사용할 수 있지만, 우리 경우에는 작동하지 않을 것입니다, 왜냐하면 RDP가 CoreOS 내부에 없기 때문입니다. VNC가 옵션인지 확실하지 않지만, 그것은 제가 아직 테스트해야 할 무언가입니다. 마찬가지로, SSH는 문제를 일으킵니다, 왜냐하면 윈도우는 기본 SSH 에이전트와 함께 제공되지 않고, PuTTY가 설치되어 있어도 PATH에 없을 수 있기 때문입니다.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe rdp default
==> default: Detecting RDP info...
RDP connection information for this machine could not be
detected. This is typically caused when we can't find the IP
or port to connect to for RDP. Please verify you're forwarding
an RDP port and that your machine is accessible.

PS C:\HashiCorp\Vagrant\bin> .\vagrant.exe ssh default -- -A
`ssh` executable not found in any directories in the %PATH% variable. Is an SSH client installed? Try installing Cygwin, MinGW or Git, all of which contain an SSH client. Or use your favorite SSH client with the following authentication information shown below:

Host: 127.0.0.1
Port: 2222
Username: core
Private key: C:/Users/<user>/.vagrant.d/insecure_private_key

그런 다음, 윈도우에서 작업하는 경우, OpenSSH 키를 PuTTY 포맷이나 유사한 것으로 변환해야 할 것입니다. 다시 말하지만, 이것은 대부분의 사람들이 Vagrant 모험에서 결코 마주치지 않을 것이지만, 유사한 문제들이 여러 다른 방식으로 해결되는 것을 보는 것은 유용합니다.

이 시점에서, 우리는 VirtualBox를 프로바이더로 사용하여 첫 번째 Vagrant VM 인스턴스를 성공적으로 시작했습니다, 하지만 그것은 우리의 테스트 동안 어디에서도 마주치지 않은 무언가입니다. 글쎄요, 종류는. 하지만 우리는 어떤 명시적인 VirtualBox 명령어도 사용할 필요가 없었고, XML 파일들이나 그런 것들에 대해 걱정할 필요도 없었습니다. 이것은 단지 시작일 뿐이지만, 오늘의 튜토리얼의 끝이기도 합니다. 우리는 높은 음으로 마무리합니다.

추가 자료

텍스트를 좀 원하신다면:

Introducing Vagrant, 리눅스 저널 기사

Vagrant 크래시 코스

Docker 네트워킹 것

결론

Vagrant는 흥미로운 개념처럼 보이지만, 당신의 환경에서 문제를 해결하는 가장 좋은 방법은 아닐 수 있습니다. 만약 당신이 정말로 가상화를 마스터하고 싶고, 당신의 설정의 모든 측면을 제어해야 한다면, 당신은 바닥부터 모든 것을 배우는 데 필요한 시간, 피, 인내를 투자해야 합니다. 왜냐하면 그렇지 않으면, 문제가 발생했을 때 어떤 문제도 해결할 수 없을 것이고, 그들은 발생할 것이며, 또는 기술을 이해할 수 없을 것이기 때문입니다.

하지만 그것은 흥미로운 스핀이고, 우리는 아직 우리의 가상 여행에서 Vagrant를 얼마나 멀리 가져갈 수 있는지 볼 것입니다. 최소한, 우리는 프로그램 설정 이슈들과 초기 구성을 다루었고, 이미지들을 가져오고 시작하는 방법을 배웠고, 몇 가지 기본 체크를 했고, 네트워크 연결 문제를 해결했습니다. 꽤 유용합니다. 더 올 것이 확실합니다, 매우 중요한 플러그인 프레임워크를 포함하여, VMware, LXC, libvirt에 대한 연결 부분을 확장하고, 고급 네트워킹, 클러스터 설정, 기타 등등. 업데이트를 기대해 주세요.

치어스.

  1. QEMU Virgil: উন্নত ভার্চুয়ালাইজেশন এবং গ্রাফিক্স এক্সিলারেশন আনলক করুন

  2. XenServer & XenCenter 리뷰: 랩톱에서의 원활한 설치

  3. VirtualBox 4: নতুন কী এবং ব্যবহারকারীদের ऊपर প্রভাব

  4. MojoPac: যেকোনো পিসি জন্য পোর্টেবল ডেস্কটপ ভার্চুয়ালাইজেশন