코드형 인프라 : 코드로 하드웨어를 설정, 운영 체제를 설치, 네트워크를 구성, 개발 환경을 구축하는 것.
장점 : 사용자가 모두 동일한 환경에서 테스트할 수 있음. 문제 발생시 몇 번의 명령 실행만으로 환경을 다시 새것처럼 구성 가능
필자는 이미 버추얼박스를 실습으로 인해 설치했기 때문에 생략하겠음.
필자는 이미 설치하였기 때문에 생략하겠음.
cmd 실행하고 베이그런트 설치 디렉터리로 이동 -> vagrant init 명령 실행(프로비저닝에 필요한 기본 코드 생성)
Vagrantfile(베이그런트 스크립트 파일)을 vs code로 열기 -> config.vm.box = "base"라는 내용이 있는지 확인
cmd에서 vagrant up 실행 -> 에러 발생
Vagrantfile 다음과 같이 변경 (운영 체제 이미지 저자가 제공하는 걸로 바꿔줌)
다시 한번 vagrant up
-> 가상 머신 이미지가 내려받아짐
버추얼박스 실행해서 가상 머신 생성됐는지 확인
cmd에서 vagrant ssh 명령 실행 => CentOS에 접속
설치가 정상적으로 됐는지 확인 -> CentOS의 실행 시간과 운영 체제의 종류 확인
설치한 가상 머신 삭제
베이그런트 코드는 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 명령 다시 실행
vagrant ssh 명령 실행해서 CentOS에 접속
ip addr show eth1 명령 입력해 IP(192.168.1.10)가 제대로 설정됐는지 확인
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
#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y
코드 실행
1. vagrant provision 명령으로 추가한 프로비전 구문 실행
vagrant ssh 명령으로 CeontOS 접속
yum repolist 명령으로 EPEL 저장소가 구성됐는지 확인
vi .bashrc 실행해 문법 하이라이트가 적용 됐는지 확인
vi 프로그램 종료후 가상머신 삭제
코드 입력
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
#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y
# 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
#!/usr/bin/env bash
# modify permission
chmod 744 ./ping_2_nds.sh
코드 실행
1. vagrant up을 실행 -> 총 4대의 CentOS를 설치하고 구성
vagrant ssh 명령으로 CentOS에 접속
-> 가상 머신이 여러 대라서 가상 머신 이름을 입력해야 함
vagrant ssh m-k8s 입력
ping_2_nds.sh 파일을 실행 -> 3대의 CentOS와 통신 잘 되는지 확인
exit 명령으로 가상 머신 접속 종료
필자는 푸티가 이미 설치되어 있으므로 생략함.
필자는 슈퍼푸티가 이미 설치되어 있으므로 생략함
새로운 세션 디렉터리 생성
PuTTY Sessions -> New Folder 클릭
k8s 입력하고 OK
추가된 디렉터리에서 New 메뉴를 선택
가상 머신의 정보를 다음과 같이 입력하고 Save 버튼 클릭
m-k8s에서 CopyAS 선택해 접속 정보를 그대로 복사 -> 다음과 같이 바꾸고 Save 클릭
Tools > Options 선택 -> GUI 탭에서 Allow plain text ~ 항목 체크하고 OK 클릭
k8s 디렉터리에서 Connect All을 선택해 한번에 접속 -> 다음과 같이 4분할로 만듦
commands 창에서 hostname을 입력해 확인
-> 한번에 실행됨을 알 수 있음
가상 머신을 모두 삭제하기
여러 가상머신을 설치하고 실행하는 실습을 하면서 과연 우리 프로젝트에 가상머신을 여러개 써야 하는가에 대해 감이 잡히지 않았다. 조금 더 학습해서 개념을 잡아야겠다...ㅎ