📗 vagrant는 무엇인가?
테스트 환경을 코드를 통해 쉽게 구성해줄 수 있게 해주는 툴
주로 virtualbox에서 테스트하며, 검색해 본 결과 라이센스와 호환성 문제로 vmware는 잘 안 쓰는듯하다.
프로비저닝 : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말
코드형 인프라(Infrastructure as Code, IaC)는 수동 프로세스가 아닌 코드를 통해 인프라를 관리하고 프로비저닝 하는 것
📗 설치 방법
아래 링크에서 최신 버전 다운로드
📗 초기화
cmd창을 열고 설치 위치에서 init을 한다.
C:\Users\japan>cd C:\HashiCorp
C:\HashiCorp>
C:\HashiCorp>
C:\HashiCorp>vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
init이 끝나면 Vagrantfile이 생성됨을 확인할 수 있음
📗 이미지 지정
vagrant 클라우드에서 설치하고자 하는 OS 이미지를 찾고 버튼 클릭
https://app.vagrantup.com/boxes/search
vagrantfile 소스에 이미지를 복사 후에, cmd 창에 vagrant up 명령어 수행한다.
cpu memory hostname 네트워크 설정 등을 한 vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
config.vm.box = "ubuntu/focal64"
cfg.vm.provider "virtualbox" do |vb|
vb.name="m-k8s(admin)"
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
접속은 vagrant ssh
📗 생성된 이미지 삭제하기
C:\HashiCorp>vagrant destroy -f
==> default: Destroying VM and associated drives...
📗 다수의 vm 생성하기
만약 3개의 노드를 추가하는 방법은 아래와 같다.
for문처럼 돌리면 다수의 vm도 뚝딱 생성이 가능
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "m-k8s" do |cfg|
config.vm.box = "ubuntu/focal64"
cfg.vm.provider "virtualbox" do |vb|
vb.name="m-k8s(admin)"
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
## 3 node add
(1..3).each do |i|
config.vm.define "w#{i}-k8s" do |cfg|
config.vm.box = "ubuntu/focal64"
cfg.vm.provider "virtualbox" do |vb|
vb.name="w#{i}-k8s"
vb.cpus = 2
vb.memory = 1024
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
end
end
end
접속은 vagrant ssh 호스트네임을 쓰면 된다.
📗 네트워크 잡아주기
vm을 생성해도 vm 간 통신이 되지 않는다 찾아보니 생성한 네트워크 인터페이스 카드에 아이피가 등록되지 않아 발생한 문제
파일 > 호스트 네트워크 관리자에 들어가면 169.254.252.215로 되어있는 것을 볼 수 있음
VirtualBox Host-Only Ethernet Adapter의 아이피를 바꿔준다.(vm 아이피만 아니면 되는 듯)
주의사항 : vm을 모두 종료시키고 설정해야 한다, 구동 중에 변경하고 닫으면 ip설정이 초기화됨
생성된 vm 끼리 ping이 잘 나가면 성공이다.
📗 생성된 vm SSH 접속하기
cmd창에서 vagrant ssh-config 명령어를 치면 생성된 vm의 정보와 ssh연결에 필요한 프라이빗 키가 조회된다
📗 securecrt로 접속하기
hostname : 127.0.0.1 port는 설정한 포트 username은 vagrant
authentication에 Publickey를 누르고 Properties클릭
Use identiy or certificate file에 vagrant ssh-config에서 조회 한 프라이빗 키를 넣는다.
📗 vagrant vm 끄기
vagratn halt
📗 vagrant vm 켜기
초기 프로비저닝뿐만 아니라 기존 vm이 있을 경우 vagrantfile에 정의된 vm을 켜준다.
vagarnt up
📗 사용후기
1개의 vm을 만들고 복제한다 치더라도 vagrant가 vm을 만들고 삭제하는 속도가 훨씬 빠르다. 3~4개 만드는데 5분내외
다만 virtualbox에서만 쓰는 방법만 많이 있고 그외 가상화 환경에서 쓰는 것은 인터넷에 자료가 별로 없다.
또한 원격접속툴을 이용하여 하려면 id/pw방식이 아닌 퍼블릭키 인증방식이라 좀 불편하다..
id/pw방식은 없으려나 나중에 찾으면 기록해놔야겠다.
'인프라 > Docker&K8S' 카테고리의 다른 글
쿠버네티스 아키텍처 -네임스페이스(namespace) (0) | 2022.04.09 |
---|---|
쿠버네티스 명령어 훓어보기(k8s명령어) (0) | 2022.04.08 |
2022년 우분투 쿠버네티스(ubuntu Kubernetes) 설치 (0) | 2022.04.06 |
teleport /lib64/libc.so.6: version `GLIBC_2.18' not found (0) | 2022.03.06 |
우분투 도커설치 하기(ubuntu docker 설치) (0) | 2022.03.06 |
댓글