Vagrant로 여러 VM 시작
9814 단어 Vagrant
가 되었으므로, 조사해 시험해 보았다.
검증 환경
참고
공식 문서에 예가 실려 있었기 때문에, 이것을 보면서 바삭하게 흉내내 보았다.
Multi-Machine - Vagrant by HashiCorp
Vagrantfile 만들기
box는 ubuntu/bionic64를 사용.
$ vagrant init ubuntu/bionic64
$ vi Vagrantfile
문서에서는 provisioning라든지 쓰거나 VM마다 box를 바꾸거나 하고 있는 것 같았지만, 단순히 같은 box로 2대 기동하는 것만이라면 이런 느낌으로 OK였다.
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
config.vm.define "machine_a"
config.vm.define "machine_b"
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
# Customize the amount of memory on the VM:
vb.memory = "2048"
vb.cpus = "1"
end
end
메모리라든지 CPU의 설정은 기호로.
config.vm.define
로 VM을 복수 정의할 수 있다.시작
시작은 항상
vagrant up
에서.$ vagrant up
Bringing machine 'machine_a' up with 'virtualbox' provider...
Bringing machine 'machine_b' up with 'virtualbox' provider...
==> machine_a: Importing base box 'ubuntu/bionic64'...
==> machine_a: Matching MAC address for NAT networking...
(略)
==> machine_b: Importing base box 'ubuntu/bionic64'...
==> machine_b: Matching MAC address for NAT networking...
(略)
machine_b: Inserting generated public key within guest...
machine_b: Removing insecure key from the guest if it's present...
machine_b: Key inserted! Disconnecting and reconnecting using new SSH key...
==> machine_b: Machine booted and ready!
(略)
정의한
machine_a
다음에 machine_b
가 시작되는 모습. vagrant status
에서 확인.$ vagrant status
Current machine states:
machine_a running (virtualbox)
machine_b running (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
오르고 있는 것 같다. VM에 들어갈 때는 단순히
vagrant ssh
그냥 하면 "여러가지 있기 때문에 이름 지정하라!"라는 화가 나기 때문에 vagrant ssh <VM名>
$ vagrant ssh
This command requires a specific VM name to target in a multi-VM environment.
$ vagrant ssh machine_a
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-39-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Mon May 6 07:42:41 UTC 2019
(略)
네트워크 설정
이대로라면 기동한 VM끼리 소통을 취할 수 없기 때문에, 네트워크의 설정을 변경해 서로 같은 세그먼트(segment)로 기동하도록(듯이) 한다.
config.vm.define
블록에서 각 VM의 IP를 구성합니다.덧붙여서 네트워크의 설정에 대해서는 이쪽을 참조.
Networking - Vagrant by HashiCorp
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
# config.vm.network "private_network", type: "dhcp"
config.vm.define "machine_a" do |machine|
machine.vm.network "private_network", ip: "192.168.1.101"
end
config.vm.define "machine_b" do |machine|
machine.vm.network "private_network", ip: "192.168.1.102"
end
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = false
# Customize the amount of memory on the VM:
vb.memory = "2048"
vb.cpus = "1"
end
end
각 VM 내에서 IP를 확인해 봅니다.
machine_a
vagrant@ubuntu-bionic:~$ ip a | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet6 fe80::c2:ccff:fedd:c7b8/64 scope link
inet 192.168.1.101/24 brd 192.168.1.255 scope global enp0s8
inet6 fe80::a00:27ff:fe41:d68b/64 scope link
machine_b
vagrant@ubuntu-bionic:~$ ip a | grep inet
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
inet6 fe80::c2:ccff:fedd:c7b8/64 scope link
inet 192.168.1.102/24 brd 192.168.1.255 scope global enp0s8
inet6 fe80::a00:27ff:fe06:6400/64 scope link
ping도 지나가는지 확인.
machine_a
vagrant@ubuntu-bionic:~$ ping 192.168.1.102
PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data.
64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=0.616 ms
64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=0.578 ms
64 bytes from 192.168.1.102: icmp_seq=3 ttl=64 time=0.617 ms
64 bytes from 192.168.1.102: icmp_seq=4 ttl=64 time=0.850 ms
^C
--- 192.168.1.102 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.578/0.665/0.850/0.109 ms
machine_b
vagrant@ubuntu-bionic:~$ ping 192.168.1.101
PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data.
64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.225 ms
64 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.610 ms
64 bytes from 192.168.1.101: icmp_seq=3 ttl=64 time=0.385 ms
64 bytes from 192.168.1.101: icmp_seq=4 ttl=64 time=0.833 ms
^C
--- 192.168.1.101 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3047ms
rtt min/avg/max/mdev = 0.225/0.513/0.833/0.230 ms
좋은 느낌.
요약
이것으로 2대 이상의 VM을 시작하는 경우도 Vagrant로 빨리 환경 구축할 수 있을 것 같다. provisioning에 대해서도 공통 처리와 개별의 처리로 나누어 기술할 수 있을 것 같은 느낌이지만, 지금이라면 대체로 Docker로 부족한 것일까, 라고.
Reference
이 문제에 관하여(Vagrant로 여러 VM 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hotaru51/items/0d9d3b28e6877b03803d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)