728x90
기본 Vagrantfile
# -*- mode: ruby -*- # 파일이 루비임을 인식하게 하는 호환 코드
# vi: set ft=ruby : # ft = file type
Vagrant.configure("2") do |config| # API version=2 # vagrant config 시작
config.vm.define "m-k8s" do |cfg| # 가상머신 이름을 m-k8s로 정의하고 config 시작
config.vm.box = "sysnet4admin/CentOS-k8s" # cfg 내용들을 box에 저장
cfg.vm.provider "virtualbox" do |vb| # virtual box에서 필요한 cfg 시작
vb.name = "m-k8s(github_SysNet4Admin)" # vm 이름
vb.cpus = 2 # CPU 갯수
vb.memory = 2048 # 메모리
vb.customize ["modifyvm", :id, "--groups", "/k8s-SM(github_SysNet4Admin)"] # grouping
end # virtual box 설정 끝
cfg.vm.host_name = "m-k8s" # 가상머신 자체에 대한 설정, 호스트이름
cfg.vm.network "private_network", ip: "192.168.1.10" # eth1 인터페이스를 호스트전용으로 구성
cfg.vm.network "forwarded_port", guest:22, host:60010, auto_correct: true, id: "ssh" # 60010포트를 22번 포트로 전달, 포트 중복 시 포트 자동 변경
cfg.vm.synced_folder "../data", "/vagrant", disabled: true # 호스트(PC)와 게스트(가상 머신) 사이에 디렉터리 동기화 disable
end
end
- do |cfg| 구문으로 설정을 시작하고 end로 설정의 한 범위를 끝낸다.
- ssh를 명시해주는 이유는 22번 포트를 id: "ssh"로 설정하지 않으면 두 개의 중복 포트로 설정한다.
1. 자기 자신(127.0.0.1/localhost)의 2222번 포트
2. 모든 IP(0.0.0.0)의 60010 포트
에서 오는 내용을 게스트의 22번으로 포워딩한다. 기능적으로는 문제 없으나 명시적으로 좋지 않고, 설정의 낭비를 줄이기 위해 하나의 포트만 사용하도록 해준다.
이름, 그룹, 메모리가 원하는대로 작성되었다.
프로비저닝 추가
Vagrantfile
# -*- mode: ruby -*- # 파일이 루비임을 인식하게 하는 호환 코드
# vi: set ft=ruby : # ft = file type
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
config.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" # provisioning script
end
end
install_pkg.sh file
#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y
- EPEL(Extra packages for Enterprise Linux) 저장소와 코드 하이라이트를 위한 Vim 기능을 설치하는 shell 구문
3대의 워커노드 추가
# -*- mode: ruby -*- # 파일이 루비임을 인식하게 하는 호환 코드
# vi: set ft=ruby : # ft = file type
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
config.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" # provisioning script
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| # 반복문. 1부터 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" # #{i}이 1,2,3으로 치환
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
ping_2_nds.sh file
# 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
config.sh 파일
#!/usr/bin/env bash
# modify permission
chmod 744 ./ping_2_nds.sh
m-k8s 가상머신에 접속해 ping_2_nds.sh 스크립트를 실행시키면 다른 3개의 가상머신과 통신이 제대로 되는 것을 확인할 수 있다.
728x90