2장 테스트 환경 구성하기

sua·2022년 9월 17일
0
post-thumbnail

코드형 인프라 : 코드로 하드웨어를 설정, 운영 체제를 설치, 네트워크를 구성, 개발 환경을 구축하는 것.
장점 : 사용자가 모두 동일한 환경에서 테스트할 수 있음. 문제 발생시 몇 번의 명령 실행만으로 환경을 다시 새것처럼 구성 가능

2.1 테스트 환경을 자동으로 구성하는 도구

2.1.1 버추얼박스 설치하기

필자는 이미 버추얼박스를 실습으로 인해 설치했기 때문에 생략하겠음.


2.1.2 베이그런트 설치하기

필자는 이미 설치하였기 때문에 생략하겠음.


2.1.3 베이그런트 구성하고 테스트하기

  1. cmd 실행하고 베이그런트 설치 디렉터리로 이동 -> vagrant init 명령 실행(프로비저닝에 필요한 기본 코드 생성)

  2. Vagrantfile(베이그런트 스크립트 파일)을 vs code로 열기 -> config.vm.box = "base"라는 내용이 있는지 확인

  3. cmd에서 vagrant up 실행 -> 에러 발생

  4. Vagrantfile 다음과 같이 변경 (운영 체제 이미지 저자가 제공하는 걸로 바꿔줌)

  5. 다시 한번 vagrant up

    -> 가상 머신 이미지가 내려받아짐

  6. 버추얼박스 실행해서 가상 머신 생성됐는지 확인

  7. cmd에서 vagrant ssh 명령 실행 => CentOS에 접속

  8. 설치가 정상적으로 됐는지 확인 -> CentOS의 실행 시간과 운영 체제의 종류 확인

  9. 설치한 가상 머신 삭제



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

2.2.1 가상 머신에 필요한 설정 자동으로 구성하기

베이그런트 코드는 Ruby 언어로 작성함.
코드 입력


# -*- 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
  end
end

코드 실행
1. vagrant up 명령 다시 실행

  1. vagrant ssh 명령 실행해서 CentOS에 접속

  2. ip addr show eth1 명령 입력해 IP(192.168.1.10)가 제대로 설정됐는지 확인

  3. exit 실행해서 접속 종료


2.2.2 가상 머신에 추가 패키지 설치하기

코드 입력

# -*- 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
  • 추가 패키지를 설치하기 위한 스크립트 작성
#!/usr/bin/env bash

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

코드 실행
1. vagrant provision 명령으로 추가한 프로비전 구문 실행

  1. vagrant ssh 명령으로 CeontOS 접속

  2. yum repolist 명령으로 EPEL 저장소가 구성됐는지 확인

  3. vi .bashrc 실행해 문법 하이라이트가 적용 됐는지 확인

  4. vi 프로그램 종료후 가상머신 삭제


2.2.3 가상 머신 추가로 구성하기

코드 입력
1.
CentOS 3대와 네트워크 구성을 테스트할 파일을 추가

# -*- 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
  
  #=============#
  # Added Nodes #
  #=============#

  (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
  1. 추가 패키지 설치하는 스크립트 작성
#!/usr/bin/env bash

# install packages 
yum install epel-release -y
yum install vim-enhanced -y
  1. ping 테스트 파일을 작성
# ping 3 times per nodes
ping 192.168.1.101 -c 3
ping 192.168.1.102 -c 3
ping 192.168.1.103 -c 3
  1. 설정을 변경하는 스크립트 작성
#!/usr/bin/env bash
# modify permission  
chmod 744 ./ping_2_nds.sh

코드 실행
1. vagrant up을 실행 -> 총 4대의 CentOS를 설치하고 구성

  1. vagrant ssh 명령으로 CentOS에 접속

    -> 가상 머신이 여러 대라서 가상 머신 이름을 입력해야 함

  2. vagrant ssh m-k8s 입력

  3. ping_2_nds.sh 파일을 실행 -> 3대의 CentOS와 통신 잘 되는지 확인

  4. exit 명령으로 가상 머신 접속 종료



2.3 터미널 프로그램으로 가상 머신 접속하기

2.3.1 푸티 설치하기

필자는 푸티가 이미 설치되어 있으므로 생략함.

2.3.2 슈퍼푸티 설치하기

필자는 슈퍼푸티가 이미 설치되어 있으므로 생략함


2.3.3 슈퍼푸티로 다수의 가상 머신 접속하기

  1. 새로운 세션 디렉터리 생성
    PuTTY Sessions -> New Folder 클릭

  2. k8s 입력하고 OK

  3. 추가된 디렉터리에서 New 메뉴를 선택

  4. 가상 머신의 정보를 다음과 같이 입력하고 Save 버튼 클릭

  5. m-k8s에서 CopyAS 선택해 접속 정보를 그대로 복사 -> 다음과 같이 바꾸고 Save 클릭


  6. Tools > Options 선택 -> GUI 탭에서 Allow plain text ~ 항목 체크하고 OK 클릭

  7. k8s 디렉터리에서 Connect All을 선택해 한번에 접속 -> 다음과 같이 4분할로 만듦

  8. commands 창에서 hostname을 입력해 확인


    -> 한번에 실행됨을 알 수 있음

  9. 가상 머신을 모두 삭제하기


느낀점 및 응용할 부분

여러 가상머신을 설치하고 실행하는 실습을 하면서 과연 우리 프로젝트에 가상머신을 여러개 써야 하는가에 대해 감이 잡히지 않았다. 조금 더 학습해서 개념을 잡아야겠다...ㅎ

profile
가보자고

0개의 댓글