[Vagrant] 가상 머신 설정 및 네트워크 구성

2022. 9. 4. 16:23· 데브옵스 & 인프라/Kubernetes
목차
  1. 메인 노드 설정
  2. 노드 추가

가상머신을 4대를 설치하고 네트워크를 설정하는 과정을 베이그런트로 자동으로 설치하도록 파일을 작성합니다.

 

메인 노드 설정

먼저 Vagrant 파일을 에디터를 통해서 열어줍니다.

 

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.define "m-k8s" do |cfg|
    cfg.vm.box = "sysnet4admin/CentOS-k8s"
    cfg.vm.provider "virtualbox" do |vb|
      vb.name = "m-k8s(github_SysNet4Admin)"
      vb.cpus = 2
      vb.memory = 2048
      vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
    end
    cfg.vm.host_name = "m-k8s"
    cfg.vm.network "private_network", ip: "192.168.1.10"
    cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
    cfg.vm.synced_folder "../data", "/vagrant", disabled: true
    cfg.vm.provision "shell", path: "install_pkg.sh"
    cfg.vm.provision "file", source: "ping_2_nds.sh", destination: "ping_2_nds.sh"
    cfg.vm.provision "shell", path: "config.sh"
  end
end

책의 저자인 조훈님께서 작성하신 코드입니다. 먼저 베이그런트에서 루비로 코드를 읽어 들일 때의 API 버전으로 2를 설정합니다. 이 베이그런트의 설정은 config를 통해 시작합니다. 가상머신의 이름을 m-k8s로 정하고 cfg로 설정을 지정합니다. 베이그런트의 코드를 실행할 것이 virtualbox임을 지정합니다.

 

이 버추얼박스의 이름과 cpu 개수, 메모리를 정하고 그룹을 지정합니다.

호스트명을 정하고 호스트 전용 네트워크를 설정하여 eth1 인터페이스를 호스트 전용으로 지정합니다. 그리고 ssh 통신에 대해서 설정하는데 60010번 호스트에서 오는 요청을 22번 포트로 전달되도록 포워딩설정하도록 합니다. 포트가 중복되면 변경될 수 있도록 auto_correct를 true로 설정합니다.

 

PC 혹은 노트북과 같은 호스트와 가상머신인 게스트 사이에서 data/vagrant 디렉터리가 서로 동기화 되지 않도록 disabled를 true로 설정합니다.

 


이제 프로비전을 작성합니다. 셸을 통해 가상 머신에 필요한 패키지를 설치합니다. 셸 파일은 install_pkg.sh 입니다.

    cfg.vm.provision "shell", path: "install_pkg.sh"
yum install epel-release -y
yum install vim-enhanced -y

EPEL 저장소를 먼저 만들어 패키지를 저장할 수 있도록 하고 vim 에디터를 설치합니다.


    cfg.vm.provision "file", source: "ping_2_nds.sh", destination: "ping_2_nds.sh"

 

그 다음 파일을 가상 머신에 전달합니다. 노트북(호스트)에 있는 ping_2_nds.sh 파일을 가상머신(게스트)의 홈 디렉터리에 전달합니다.


    cfg.vm.provision "shell", path: "config.sh"

게스트에서  config.sh 파일을 셸로 실행합니다.

 

chmod 744 ./ping_2_nds.sh

ping_2_nds.sh 파일을 전달받고 실행하기 위해 권한을 744로 줍니다.

 

노드 추가

  (1..3).each do |i|
    config.vm.define "w#{i}-k8s" do |cfg|
      cfg.vm.box = "sysnet4admin/CentOS-k8s"
      cfg.vm.provider "virtualbox" do |vb|
        vb.name = "w#{i}-k8s(github_SysNet4Admin)"
        vb.cpus = 1
        vb.memory = 1024
        vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"]
      end
      cfg.vm.host_name = "w#{i}-k8s"
      cfg.vm.network "private_network", ip: "192.168.1.10#{i}"
      cfg.vm.network "forwarded_port", guest: 22, host: "6010#{i}", auto_correct: true, id: "ssh"
      cfg.vm.synced_folder "../data", "/vagrant", disabled: true
      cfg.vm.provision "shell", path: "install_pkg.sh"
    end
  end
end

마스터 노드와 같은 과정이지만, i 변수로 각각 다르게 설정할 수 있도록 합니다. ip값 또한 변경시킵니다. 각각의 가상머신에도 패키지를 설치합니다.

 

이제 Vagrant 파일이 담긴 디렉터리에서 cmd를 통해 vagrant up으로 CentOS를 설치합니다. 설치 및 연결 후에 홈 디렉터리에 있는 ping_2_nds.sh를 실행하여 통신을 확인합니다. bash에서 ./ping_2_nds.sh를 입력하여 실행합니다.

저작자표시 비영리 (새창열림)

'데브옵스 & 인프라 > Kubernetes' 카테고리의 다른 글

minikube에서 파드로 서버 띄우고, 컨테이너 접근하기(MacOS docker driver 이슈)  (1) 2023.11.01
[Kubernetes] 쿠버네티스 서비스 (책 실습)  (0) 2022.09.09
[Kubernetes, K8S] 쿠버네티스 사용 방법  (0) 2022.09.04
[Infra Tools] 인프라 생성을 위한 도구 설치(버추얼박스, 베이그런트)  (0) 2022.08.31
[Cloud Infra] 서비스 인프라 환경과 클라우드 인프라  (0) 2022.08.30
  1. 메인 노드 설정
  2. 노드 추가
'데브옵스 & 인프라/Kubernetes' 카테고리의 다른 글
  • [Kubernetes] 쿠버네티스 서비스 (책 실습)
  • [Kubernetes, K8S] 쿠버네티스 사용 방법
  • [Infra Tools] 인프라 생성을 위한 도구 설치(버추얼박스, 베이그런트)
  • [Cloud Infra] 서비스 인프라 환경과 클라우드 인프라
턴태
턴태
import { Dream } from "future";
턴태
턴태의 밑바닥부터 시작하는 de-vlog
턴태
전체
오늘
어제
  • ROOT (187)
    • Node.js (37)
      • ES6 (1)
      • TypeScript (3)
      • Express.js (16)
      • NestJS (16)
      • JS (24)
    • 프론트엔드 (29)
      • CS (5)
    • 백엔드 (1)
      • 검색 (2)
      • Database (1)
    • 기타 툴 (1)
      • git (1)
    • 데브옵스 & 인프라 (19)
      • Kubernetes (15)
      • Docker (2)
      • Monitoring (1)
      • IaC (1)
    • Algorithm (90)
      • Implementation & simulation (5)
      • Math (4)
      • Brute Force (1)
      • String (0)
      • Graph (5)
      • Recursion & Backtracking (19)
      • Divide & Conquer (2)
      • Dynamic Programming (18)
      • Greedy (13)
      • Priority Queue (2)
      • Binary Search (6)
      • Data Structure (7)
      • Shortest Path (5)
      • Minimum Spanning Tree (1)
      • Sorting (1)
      • Prefix Sum (1)
    • Linux (1)
      • Ubuntu (1)
    • Diary (5)
      • Algorithm (1)
      • Conference (1)
      • Retrospective (3)
    • Book (0)
      • Self-Development (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 인프런
  • Express
  • Kubernetes
  • dynamic programming
  • Toy Project
  • 함수형 프로그래밍
  • 토이프로젝트
  • 백준
  • 타입스크립트
  • 백트래킹
  • baekjoon
  • 다이나믹 프로그래밍
  • backtracking
  • k8s
  • 네스트
  • nestjs
  • 인프런X디프만
  • 익스프레스
  • 노드
  • GREEDY
  • TypeScript
  • 자바스크립트
  • Omuk
  • 디프만
  • node.js
  • 파이썬
  • 오먹
  • N과 M
  • python
  • 쿠버네티스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
턴태
[Vagrant] 가상 머신 설정 및 네트워크 구성
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.