티스토리 뷰

Cloud/Private Cloud

vagrant

jacobbaek Jacob_baek 2019. 5. 6. 17:42

vagrant란?

vagrant 홈페이지 첫 페이지에 나와있는 "Development Environments made easy"라는 문구에서 볼수 있듯이 손쉽게 개발 환경을 만들수 있게 도와주는 도구이다. 실제로 개발에 사용된 application이 설치되어 있거나 혹은 빈 Virtual Machine을 손쉽게 만들어서 개발에 사용할 수 있도록 해준다.

https://www.vagrantup.com/

vagrant 사용법

ubuntu 19.04 를 laptop으로 사용하는 환경에서 KVM을 hypervisor로 하여 진행

아래와 같은 명령을 참고하여 사용한다.

vagrant box list
vagrant init
vagrant up
vagrant status
vagrant halt
vagrant destroy

 

만약 qemu-kvm을 Hypervisor로 사용하고자 할 경우 아래와 같은 옵션을 추가하여 사용한다.

vagrant up --provider=libvirt

https://stackoverflow.com/questions/42155213/using-vagrant-to-set-up-a-vm-with-kvm-qemu-without-virtualbox

참고해야 할 것은 Hypervisor를 qemu-kvm을 사용하는 경우 지원되는 image가 제한적이다.
아래 링크를 참고하여 지원되는 hypervisor를 확인한후 사용을 권장한다.
- https://app.vagrantup.com/boxes/search

또한 참고할 것은 public network 의 경우 macvlan type으로 생성됨을 참고하여 network 설정을 진행하는것을 권장한다.
- https://github.com/vagrant-libvirt/vagrant-libvirt#networks

 

처음 별도의 설정없이 실행하면 아래와 같이 기본 vagrant user로 생성되며 

...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Configuring and enabling network interfaces...
    default: SSH address: 192.168.121.129:22
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Rsyncing folder: /home/jacob/ => /vagrant

 

아래와 같이 vagrant command를 이용하여 shell을 사용할 수 있다.

jacob@jacob-laptop:~$ vagrant ssh
[vagrant@localhost ~]$

기본적으로 사용자계정의 home directory에 .vagrant.d directory에 insecure_private_key를 생성하여 연결을 시도하기에 이를 직접 선택하여 아래와 같이 연결할 수도 있다.

ssh -i ~/.vagrant.d/insecure_private_key vagrant@192.168.122.245

 

vagrant로 status를 확인하면 현재 vagrant를 통해 동작중인 vm의 정보를 확인할 수 있으며 해당 이름을 사용하여 destroy를 수행할수도 있다.

jacob@jacob-laptop:~$ vagrant status
Current machine states:

default                   running (libvirt)

The Libvirt domain is running. To stop this machine, you can run
`vagrant halt`. To destroy the machine, you can run `vagrant destroy`.
jacob@jacob-laptop:~$ vagrant destroy default
    default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Removing domain...

 

별도의 user / password를 사용하고자 할 경우 home directory에 Vagrantfile 파일이 있고 관련 내용을 변경하면 된다.
일반적으로 vagrant ssh config 설정은 다음과 같이 passwordauthentication 이 no로 설정되어 있다.

jacob@jacob-laptop:~/workspaces/provision-jira$ vagrant ssh-config
Host default
  HostName 192.168.121.74
  User root
  Port 22
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentitiesOnly yes
  LogLevel FATAL

하여 다음 링크를 참고하여 이를 변경하여야 사용이 가능하다.

config.vm.provision "shell", inline: <<-SHELL
  sed -i 's/ChallengeResponseAuthentication no/ChallengeResponseAuthentication yes/g' /etc/ssh/sshd_config    
  systemctl restart sshd
SHELL

- https://stackoverflow.com/questions/45841206/how-to-enable-password-ssh-authentication-for-vagrant-vm

또한 ansible module 중 authorized_key 라는 module이 있고 이를 활용하여 자신의 public key를 추가하여 사용할 수도 있다.
- https://www.jacobbaek.com/796

 

참고로 Virtualbox를 사용하는 경우 config.vm.network "private_network" 을 필히 지정하는것이 좋다.
이유는 Virtualbox는 NAT 모드를 사용하는 interface를 기본으로 생성하고 이는 외부로는 연결되지만 host(즉, laptop 및 desktop 으로 실제 vagrant를 통해 VM을 실행하는 주체)에서는 연결이 되지 않기에 확인이 불가하기 때문이다.
private_network을 통해 host-only interface를 추가하여 사용하는것이 좋다.

 

다양한 provision 을 통한 Vagrantfile 관리

shell, ansible, ansible_local, salt, docker 등 다양한 방식으로 vagrantfile을 변경하여 application 및 Service를 손쉽게 VM에 provision할수 있다.

https://www.vagrantup.com/docs/provisioning/shell.html

참고사이트 

https://linuxize.com/post/how-to-install-vagrant-on-ubuntu-18-04/

'Cloud > Private Cloud' 카테고리의 다른 글

Vagrant with VirtualBox in Ubuntu 19.04  (0) 2019.05.12
vagrant with Ansible  (0) 2019.05.09
vagrant  (0) 2019.05.06
nested virtualization enable on Red Hat Virtualization  (0) 2018.10.31
How to analysis for Soure Code  (0) 2018.08.30
ansible set_fact  (0) 2018.06.07
댓글
댓글쓰기 폼