베이그런트로 테스트 환경 구축하기

2023. 9. 4. 03:58쿠버네티스/쿠버네티스

728x90
반응형

Vagrantfile을 수정해 원하는 구성이 자동으로 CentOS에 입력되도록 연습해보기.

Vagrantfile을 새롭게 작성해 원하는 구성을 자동으로 생성해보는 연습.

코드는 루비라는 언어로 작성됨.

# 현재 루비임을 인식하게 하는 호환코드 ft는 파일 종류(file type)의 약자이며, 해당 내용은 실행에 아무런 영향을 미치지 않음.
# -*- mode: ruby -*-
# vi: set ft=ruby :
# "2"는 베이그런트에서 루비로 코드를 읽어 들여 실행할 때 작동하는 API 버전 의미, do |config|는 베이그런트 설정을 시작을 알림.
Vagrant.configure("2") do |config| 
  #버추얼박스에서 보이는 가상 머신을 "m-k8s"로 정의, do |cfg|를 추가해 원하는 설정으로 변경, do |이름| 으로 시작한 작업은 end로 추후 종료해줘야 함.
  config.vm.define "m-k8s" do |cfg| 
    cfg.vm.box = "sysnet4admin/CentOS-k8s" #기본값 config.vm.box를 do |cfg| 에 적용한 내용을 받아 cfg.vm.box로 변경함.
    cfg.vm.provider "virtualbox" do |vb| # 프로바이더가 버추얼박스라는 것을 정의,프로바이더는 베이그런트를 통해 제공되는 코드가 실제로가상 머신으로 배포되게 하는 소프트웨어 / 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" # 호스트 전용 네트워크 값 설정 , eth1 인터페이스를 호스트 전용 으로 구성
    #ssh 통신은 호스트 60010번을 게스트 22번으로 포워딩 설정 ,중복 대비해포트가 중복되면 자동으로 변경되도록 auto_correct true설정
    cfg.vm.network "forwarded_port", guest: 22, host: 60010, auto_correct: true, id: "ssh"
    cfg.vm.synced_folder "../data", "/vagrant", disabled: true #호스트와 게스트 사이에 디렉터리 동기화가 이뤄지지 않게 설정
  end # cfg 끝났음 알림
end # config 끝났음 알림

작성이 완료되면 "vagrant up"으로 실행 후 설치완료되면 ssh로 접근 하여 ip addr show eth1로 확인 후 exit로 빠져나옴.

추가 패키지 설치하기

# -*- 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" #add provisioning script
  end
end

Vagrantfile이 위치한 디렉토리에서추가 패키지를 위한 스크립트를 아래처럼 작성한다. "파일이름: install_pkg.sh"

#!/usr/bin/env bash

# install packages 
yum install epel-release -y
yum install vim-enhanced -y

cmd창에서 "vagrant provision"을 실행하면 추가한 구문이 실행된다. 추가가 완료되면

vagrant ssh로 다시 접속하여 EPEL 저장소가 잘 구성됬는지 확인한다. 그리고 하이라이트가 잘 적용됬는지도

vi .bashrc를 실행해 확인해 본다.

확인이 되면 exit로 빠져나와 vagrant destroy -f 명령으로 가상 머신을 삭제해준다.

추가노드 구성하기

# -*- 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" # 파일을 게스트 운영 체제에 전달하기 위해  shell이 아닌 file 구문으로 변경
    cfg.vm.provision "shell", path: "config.sh" # config.sh를 게스트에서 실행
  end
  
  #=============#
  # Added Nodes #
  #=============#

  (1..3).each do |i| # 1부터 3까지 3개의 인자를 반복해 i로 입력
    config.vm.define "w#{i}-k8s" do |cfg| #i값이 1,2,3 으로 차례대로 치환됨
      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

추가 노드는 처음 노드랑 거의 비슷하며 each do 구문으로 3번 반복하여 가상 머신 생성 함.

vagrant up으로 4개 노드 생성 후

vagrant ssh m-k8s로 접근하여

ping 테스트를하여 연결이 잘되는지 확인해 줍니다.

ping 테스트가 잘됬으면 exit로 빠져나와 vagrant destroy -f로 테스트 노드들을 삭제해 줍니다.

 

소스위치:

https://github.com/sysnet4admin/_Book_k8sinfra

 

GitHub - sysnet4admin/_Book_k8sInfra: < 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 >

< 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 >. Contribute to sysnet4admin/_Book_k8sInfra development by creating an account on GitHub.

github.com

 

반응형

'쿠버네티스 > 쿠버네티스' 카테고리의 다른 글

kubectl 실습  (0) 2023.09.10
마스터 노드  (0) 2023.09.04
컨테이너를 다루는 표준 아키텍처, 쿠버네티스  (0) 2023.09.04
putty와 슈퍼 putty  (0) 2023.09.04
vagrant와 virtual box  (0) 2023.09.04