가상 머신에 필요한 설정 자동으로 구성하기
# -*- 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~2번째 줄: 에디터에 현재 파일이 루비(ruby)임을 인식하게 하는 호환 코드, 실행 내용에 영향 X
3번째 줄: "2"는 베이그런트에서 루비로 코드를 읽어 들여 실행할 때 작동하는 API 버전
: 뒤의 |config|는 베이그런트 설정의 시작을 알린다.
4번째 줄: 버추얼박스에서 보이는 가상 머신을 "m-k8s"로 정의하고, do |cfg| 를 추가해 원하는 설정으로 변경
: 이렇게 do |이름|으로 시작한 작업은 end로 종료
5번째 줄: 기본값 config.vm.box를 do |cfg|에 적용한 내용을 받아 cfg.vm.box로 변경
6번째 줄: 베이그런트의 프로바이더가 버추얼박스라는 것을 정의
: 베이그런트를 통해 제공되는 코드가 실제로 가상 머신으로 배포되게 하는 소프트웨어
: 다음으로 버추얼박스에서 필요한 설정을 정의하는데, 그 시작을 do |vb|로 선언
7~11번째 줄: 버추얼박스에 생성한 가상 머신의 이름, CPU수, 메모리 크기, 소속된 그룹을 명시
: end를 적어 버추얼박스 설정이 끝났음을 알린다
12번째 줄: 가상 머신 자체에 대한 설정, do |cfg|에 속한 작업
: 12번째 줄은 호스트의 이름(m-k8s)을 설정
13번째 줄: 호스트 전용 네트워크를 private_network로 설정해 eth1 인터페이스를 호스트 전용(Host-only)으로 구성하고
: IP는 192.168.1.10 으로 지정
14번째 줄: ssh 통신은 호스트 60010번을 게스트 22번으로 전달되도록 구성한다.
: 혹시 모를 포트 중복을 대비해 auto_correct: true로 설정해서 포트가 중복되면 포트가 자동으로 변경되도록
15번째 줄: 호스트(PC 또는 노트북)와 게스트(가상 머신) 사이에 디렉터리 동기화가 이뤄지지 않게 설정 (disabled: true)
16~17번째 줄: 설정 작업(do |config|, do|cfg|)이 종료 됐음을 end 구문으로 명시
: 이때 do와 end의 들여쓰기 위치가 정확하게 일치해야 한다.
id: "ssh"를 꼭 설정해야 하는 이유?
베이그런트에서는 ssh 서비스의 기본 포트 번호인 22번을 id: "ssh"로 설정하지 않으면 다음과 같이 중복된 두 개의 포트로 설정
자기 자신(127.0.0.1/localhost)의 2222번 포트로 오는 내용과 모든 IP(0.0.0.0)의 60010 포트에서 오는 내용을 게스트의 22번으로 포워딩
기능적으로 큰 문제를 일으키지 않으나 명시적으로 좋지 않다.
코드 실행
1. 명령 프롬프트에서 vagrant up 명령을 실행
2. vagrant up 실행이 끝나면 vagrant ssh 명령을 실행해 생성된 가상 머신(CentOS)에 접속
3. CentOS에서 ip addr show eth1 명령을 입력해 IP(192.168.1.10)가 제대로 설정됐는지 확인
4. exit 명령을 실행해 CentOS 접속을 종료
'배포관련 > 도커' 카테고리의 다른 글
Docker로 MySQL 설치하는 방법 (0) | 2022.10.23 |
---|---|
테스트 환경을 자동으로 구성하는 도구 (3) (0) | 2022.10.14 |
컨테이너 인프라 환경을 지원하는 도구 (2) (0) | 2022.10.14 |
Docker 컨테이너 인프라 환경이란 (1) (0) | 2022.10.14 |