Search
Duplicate
📒

[Virtualize] 01-1. vagrant, 가상머신 설치/사용법

상태
수정중
수업
Kubernetes Infra
주제
4 more properties
참고

버추얼 박스, 베이그런트 설치

Vagrant

NOTE
Vagrant는 VirtualBox와 같은 가상화 소프트웨어를 코드로 조작하기 위한 소프트웨어다!
vagrant 파일구조
가상화 머신의 IAC를 지원해준다 생각하자
설정 스크립트를 기반으로 특정 환경의 가상머신을 생성할 수 있으며, 개발환경을 공유할 수 있고 Ruby로 개발되었다.
vagrant init # vagrantfile 파일 생성 vagrant up # vagrantfile을 바탕으로 프로비저닝 vagrant halt # 가상머신 종료 vagrant ssh # 가상머신 ssh 접속 vagrant provision # 가상머신 설정 변경/적용
Ruby
복사
기본 동작 명령어
Vagrant.configure("2") do |config| config.vm.box = "base" end
Ruby
복사
Vagrantfile 기본코드
Box: VM의 베이스 이미지, 운영체제의 필수 소프트웨어가 포함된다.

Vagrant - vm.define(멀티-머신 환경)

NOTE
Vagrant.configure("2") do |config| # 1번째 VM config.vm.define "web" do |web| web.vm.box = "ubuntu/bionic64" end # 2번째 VM config.vm.define "db" do |db| db.vm.box = "ubuntu/bionic64" end end
Ruby
복사
기본코드

Vagrant - vm.provider(리소스)

NOTE
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" # provider(Virtualbox) 설정 config.vm.provider "virtualbox" do |vb| vb.name = "vb_name" # 가상머신 이름 vb.memory = 1024 # 메모리 vm.cpus # CPU end end
Ruby
복사
기본코드

Vagrant - vm.network

NOTE
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" # 포트 포워딩( 8080 -> 80 ) config.vm.network "forwarded_port", guest: 80, host: 80 # 가상머신이 직접 외부 네트워크 연결가능 config.vm.network "public_network" # 호스트-가상머신 사설 네트워크 구축 config.vm.network "private_network", ip "192.168.32.10" end
Ruby
복사
네트워크 코드
private ip 범위
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

Vagrant - vm.provision

NOTE
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" # 쉘 스크립트 프로비저닝 config.vm.provision "shell", inline: inline: "echo Hello, World" # 쉘 스크립트 코드블록 $script = <<-'SCRIPT' echo I am provisioning... date > /etc/vagrant_provisioned_at 'SCRIPT' config.vm.provision "shell" inline: $script # 외부 스크립트 config.vm.provision "shell", path: "script.sh" # Ansible 사용 config.vm.provision "ansible" do |ansible| ansible.palybook = "playbook.yaml" end
Ruby
복사
기본코드
Vagrant는 프로비저닝 설정에 따라 자동으로 필요한 도구(Ansible, Chef 등)을 가상머신 내에 설치하거나 호스트 머신에서 실행한다.

Vagrant - vm.disk

NOTE
Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" # 디스크 설정 config.vm.disk :disk, size: "50GB", name: "extra_storage" # 추가 디스크 첨부 config.vm.disk :disk, size: "100GB", name: "data_disk", provider: "virtualbox" end
Ruby
복사
기본코드

Vagrant - 프로그래밍(변수, 반복, 조건)

NOTE
Vagrant.configure("2") do |config| # 변수 정의 box_image = "ubuntu/bionic64" # 변수 사용 config.vm_box = box_image end
Ruby
복사
변수 사용
Vagrant.configure("2") do |config| (1..3).each do |i| config.vm.define "web#{i}" do |web| web.vm.box = "ubuntu/bionic64" web.vm.network "private_network", ip: "192.168.33.#{10+i}" end end end
Ruby
복사
반복문
Vagrant.configure("2") do |config| if ENV[ end
Ruby
복사
조건문