2018년 7월 16일 월요일

Vagrant 사용 방법 (1)

vagrant는 가상머신을 이리저리 쉽게 컨트롤 할 수 있도록 도와주는 프로그램이다.
가상머신을 컨트롤 할 수 있는 명령어와 설정파일을 제공해 준다.

가상머신에 OS 를 설치하고 설정을 이것저것 해주는 것은 상당히 번거로운 일이다.
그것을 어느정도 자동으로 해주는 프로그램이다.

일단 vagrant 홈페이지에 가서 자신의 OS 에 맞는 파일을 download를 하자.
www.vagrantup.com
나는 Linux 버전으로 다운로드 했다.

현재 시점 기준으로 최신 버전은 2.1.1 이다.
https://releases.hashicorp.com/vagrant/2.1.1/vagrant_2.1.1_linux_amd64.zip

그 다음에는, vagrant box를 추가해야 한다.
vagrant box는 virtual machine을 컨트롤하기 위한 설정파일이라고 보면 된다.
자신이 만들 수도 있고, 인터넷에 공개되어 있는것을 사용할 수도 있다.
아래 링크에서 공개되어 있는 것을 다운로드 하면 된다.
https://app.vagrantup.com/boxes/search

centos/7 을 해보기로 했다.
왜냐하면 나는 ubuntu 사용자이기 때문에 centos 가 필요했기 때문이다.


centos/7 을 클릭하면 "config.vm.box" 를 "centos/7" 로 바꾸라고 되어 있다.
vm.box 의 의미는 가상 이미지를 가리킨다.
Vagrantfile 은 초기화를 하면 생성되는 파일인데 설정 파일이라고 생각하면 된다.


초기화를 하고 그 다음에 설정파일을 수정해 보자.
Vagrantfile 파일을 생성하자.
% ./vagrant init

Vagrantfile 파일을 수정하자.
% vi Vagrantfile

16번째쯤 line 으로 가면, config.vm.box 항목을 수정하자.
config.vm.box = "centos/7"

구동을 해보자.
% ./vagrant up --provider virtualbox

가상 이미지가 다운로드 되고, 뭔가 되는듯 싶더니, 에러가 발생했다.
% ./vagrant up --provider virtualbox
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
    default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v1804.02) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1804.02/providers/virtualbox.box
    default: Download redirected to host: cloud.centos.org
==> default: Successfully added box 'centos/7' (v1804.02) for 'virtualbox'!
==> default: Importing base box 'centos/7'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'centos/7' is up to date...
==> default: Setting the name of the VM: ck0911_default_1529046330151_51990
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> 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: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: No guest additions were detected on the base box for this VM! Guest
    default: additions are required for forwarded ports, shared folders, host only
    default: networking, and more. If SSH fails on this machine, please install
    default: the guest additions and repackage the box to continue.
    default:
    default: This is not an error message; everything may continue to work properly,
    default: in which case you may ignore this message.
==> default: Rsyncing folder: /home/ck0911/ => /vagrant
There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.

Host path: /home/ck0911/
Guest path: /vagrant
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL  -o ControlMaster=auto -o ControlPath=/tmp/ssh.941 -o ControlPersist=10m  -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i '/home/ck0911/.vagrant/machines/default/virtualbox/private_key'" "--exclude" ".vagrant/" "/home/ck0911/" "vagrant@127.0.0.1:/vagrant"
Error: OpenSSL version mismatch. Built against 1000207f, you have 1000106f
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

뭐지? 음.....
에러 메세지를 보니, rsync 설정에 실패를 한 모양이다.
sync 만 실패한거니까 일단 넘어가도록 하자.

virtualbox 디렉토리를 확인해 보니, 이미지는 잘 받아졌다.
% ls ~/VirtualBox VMs


virtualbox 를 실행시켜보니, 이미지는 잘 실행됐다.


가상머신에 직접(console) 접속을 해보자.
접속을 해보니, 잘 접속이 된다.
ID : vagrant
PW : vagrant


ssh 를 통해서 접속을 시도해 보자.
ssh 를 통해서는 접속이 되지 않는다.
왜냐하면 패스워드 방식이 아니라, SSH auth method: private key 방식이기 때문이다.


vagrant 를 통해 접속을 해야 한다.
% ./vagrant ssh


에러가 뜬다.
아마도 내가 가지고 있는 OS 와 vagrant 홈페이지에서 받은 파일이 서로 안 맞는 모양이다.
그냥 apt-get 으로 설치를 하자.


다시 해보자.
% ./vagrant ssh


환장하겠구먼......
virtualbox 버전이 안 맞는다는 말이다.

virtualbox 버전을 확인해 보니, 5.2 이다.



OS 버전을 확인해 보니, 16.04 이다.
% cat /etc/issue
Ubuntu 16.04.4 LTS \n \l

vagrant 버전을 확인해 보니, 1.8.1 이다.
% vagrant -v
Vagrant 1.8.1

Ubuntu 16.04 에서 apt-get 을 통해 받는 vagrant 는 1.8.1 버전이고,
virtualbox 5.1 까지만 지원한다는 결론이 나왔다.

난 이미 virtualbox 5.2 가 설치되어 있었다.
virtualbox 5.1 로 설치를 변경하는건 위험한 행동 같았다.

vagrant 2.1.1 로 변경해 주는 패키지를 설치해야 될거 같다.
다시 www.vagrantup.com 으로 이동해 보자.

이번에는 "Debian 64-bit" 를 다운로드 해보자.
https://releases.hashicorp.com/vagrant/2.1.1/vagrant_2.1.1_x86_64.deb

설치를 하자.
% sudo dpkg -i ./vagrant_2.1.1_x86_64.deb

버전을 확인해 보자
% vagrant -v
Vagrant 2.1.1

virtualbox 에 접속을 해보자.
% ./vagrant ssh

이야~ 만세! 접속이 된다. 살았다.


여기까지가 vagrant 의 설치와 기본 사용 방법이다.






출처
https://www.vagrantup.com/downloads.html
https://app.vagrantup.com/boxes/search
http://bcho.tistory.com/806
https://stackoverflow.com/questions/10155708/where-does-vagrant-download-its-box-files-to

댓글 없음:

댓글 쓰기

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...