Network/Vagrant

Vagrant - Vagrantfile을 이용한 web Server 생성

잇(IT) 2022. 6. 13. 13:03
728x90

 

목차

1. Vagrantfile 생성


1. Vagrantfile 생성

 

- vagrant 폴더를 생성한다.

- vagrantfile이 생성될 폴더이다.

 

- 해당 폴더에서 우클릭 하여 터미널 혹은 PowerShell 창을 연다.

 

- vagrant init을 실행시킨다.

- init은 시스템이 종료될 때까지 계속 실행하는 데몬 프로세스이다.

 

- vagrant init이 정상적으로 동작되면 vagrantfile이 생성되는 것을 확인 할 수 있다.


https://app.vagrantup.com/

 

Vagrant Cloud by HashiCorp

Vagrant Cloud by HashiCorp

app.vagrantup.com

- 해당 사이트에서 Vagrant 이미지를 검색하고 해당 이미지를 받아오는 방법을 확인할 수 있다.


centos7 설치 방법

- 해당 사이트에서 CentOS7 이미지 파일을 다운 받는 방법에 대한 설명이 나온다.

 

- |*****| 범위 안에 있으면 해당 |*****| 이름을 앞에 붙이고 명령어를 작성해야 한다.

 

- vagrant 사용 편의(자동 완성 등)를 위해 패키지 설치를 해준다.

 

Vagrant.configure("2") do |config|
  config.vm.define:"anm1" do |v|
    v.vm.host_name = "ans-ser1"
    v.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.name = "centos7-v0"
      vb.memory = "1024"
      vb.cpus = "1"
    end
  config.vm.box = "centos/7"
  config.vbguest.installer_options = { allow_kernel_upgrade: true }
  config.vm.network "forwarded_port", guest: 22, host: 50000, auto_correct: true, host_ip: "127.0.0.1"  config.vm.network "forwarded_port", guest: 80, host: 60080, auto_correct: true, host_ip: "127.0.0.1"
  config.vm.provision "shell", path: "install.sh"
  end
  # 두번째 VM
  config.vm.define:"ann1" do |v|
    v.vm.host_name = "ans-ser2"
    v.vm.provider "virtualbox" do |vb|
      vb.gui = true
      vb.name = "centos7-v1"
      vb.memory = "1024"
      vb.cpus = "1"
    end
  config.vm.box = "centos/7"
  config.vbguest.installer_options = { allow_kernel_upgrade: true }
  config.vm.network "forwarded_port", guest: 80, host: 60180, auto_correct: true, host_ip: "127.0.0.1"
  config.vm.provision "shell", path: "install.sh"
  end
end

- 2개의 WEB Server를 생성 및 실행하는 vagrantfile 코드

 

- vm.define :  해당 명령어를 통해 새로운 가상 머신의 정의를 내려준다. 즉, 가상 머신을 새롭게 하나 이름 설정과 동시에 생성한다고 생각하면 된다.

- v.vm.host_name : 호스트 네임을 지정한다.
- v.vm.provider : 공급자를 virtualbox로 지정하고 이를 vb란 이름으로 지정한다.

- config.vm.network "forwarded_port", guest: 80, host: 60180, auto_correct: true, host_ip: "127.0.0.1" : 네트워크 설정으로 포트포워딩을 해주겠다는 의미이다. 호스트 60180으로 들어오는 요청을 가상 머신의 80으로 포트 포워딩 하겠다는 의미다. 또한 host_ip를 127.0.0.1을 강제로 부여하겠다는 의미다. 포트 오류가 발생한다면 auto_correct: true를 작성해주면 오류가 해결된다.

 

#! /bin/bash
yum install -y httpd
systemctl start httpd
setenforce 0
cat > /var/www/html/index.html << EOF
<html>
<body>
<h1>vagrant_webserver-1</h1>
</body>
</html>
EOF
systemctl restart httpd

- vagrantfile에서 실행될 sh 파일에 들어갈 내용

- httpd 패키지 설치 및 웹 페이지 작성 코드

 

- 위 구문을 작성해줘야 설치 시 오류가 나지 않는다.

 

- vbguest 구문을 사용하기 위해 터미널에서 vagrant plugin install vagrant-vbguest를 설치해주어야 한다.

 

- vagrantfile을 실행 시키기 위한 명령어다. 터미널에서 실행 시키면 된다.

- 해당 파일을 실행시키기 위해서는 해당 경로가 지정된 상태에서 실행해야한다.

 

vagrantfile에 의해 생성된 가상 머신

- 설치가 완료되면 자동으로 Redhat에 가상머신이 생성되고 web page도 정상적으로 작동하는 것을 볼 수 있다.

 

- 터미널 창에서 vagrantfile에 의해 생성된 가상 머신으로 접속 가능한 것도 확인 할 수 있다.

- status로 실행중인 가상 머신 확인이 가능하다.

vagrant ssh [가상 머신 이름]을 통해 접속한다.

 

- vagrant ssh-config를 통해 해당 가상 머신의 세부 정보를 확인 할 수 있다.

 

vagrant destroy를 통해 가상 머신을 삭제할 수 있다.

- 삭제 시 원본 파일이 남아 중복 오류가 날 수 있으니 삭제시 주의하여 삭제한다.


-init 최초에 한번만 해주면된다.

- 포트 오류가 나면 auto_corerect: true 붙인다.

- 일단 코드를 읽어들인 다음 오류가 있는지 없는지 검사부터 하고 다음 코드를 실행 시킨다.

- 파일은 있는데 페이지가 보이지 않는다. -> 권한 문제이다. -> setenforce 0으로 해결 가능하다.

- setenforce 0 하면 폴더가 동기화되면서 권한 문제가 해결된다.

728x90