컴퓨터공학 지식

2장. vagrantfile을 통해 가상머신에 추가 패키지 설치하기(install_pkg.sh)

seulhasony 2025. 6. 2. 14:49

<목표>

[ 컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 ] 도서의

2.2.2 가상머신에 추가 패키지 설치하기 완료 (52~ 54)

2.2.3 가상 머신 추가로 구성하기 완료 (55~59)

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

  1. vagrantfile을 통해 centOS에 호스트네임, IP 등을 자동으로 설정
  2. 추가적으로, CentOS에 필요한 하기 패키지를 설치
    1. EPEL(Extra Packages for Enterprise Linux)
    2. Vim

 


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

  < 코드 실행 >

- Vagrantfile

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

 

- install_pkg.sh

< before >

# install_pkg.sh 파일

#!/usr/bin/env bash
# install packages
yum install epel-release -y
yum install vim-enhanced -y

 

## 명령 프롬프트에서 아래의 명령어를 입력해 프로비전 구문을 실행
C://HashiCorp> vargrant provision
## EOS로 인한 오류발생
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"

 

원인: CentOS 7 EOS에 따라 기존의 레포지토리 내 패키지들이 삭제되어서 설치가 되지 않습니다!

아래의 코드와 같이, 직접 코드를 입력해줘야 찾을 수 있습니다!

 

- install_pkg.sh

< after > 

#!/usr/bin/env bash

# CentOS repo change from mirror to vault
sed -i -e 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-*
sed -i -e 's/mirrorlist=/#mirrorlist=/g' /etc/yum.conf
sed -E -i -e 's/#baseurl=http:\/\/mirror.centos.org\/centos\/\$releasever\/([[:alnum:]_-]*)\/\$basearch\//baseurl=https:\/\/vault.centos.org\/7.9.2009\/\1\/\$basearch\//g' /etc/yum.repos.d/CentOS-*
sed -E -i -e 's/#baseurl=http:\/\/mirror.centos.org\/centos\/\$releasever\/([[:alnum:]_-]*)\/\$basearch\//baseurl=https:\/\/vault.centos.org\/7.9.2009\/\1\/\$basearch\//g' /etc/yum.conf

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

 

< 설치 패키지 확인  >

## CentOS 접속
C:\HashiCorp>vagrant ssh
[vagrant@m-k8s ~]$

## EPEL 저장소 설치 확인
[vagrant@m-k8s ~]$ yum repolist

 

 


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

< 코드 입력 >

- Vagrantfile

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

 

- install_pkg.sh

: 추가 패키지 설치

#!/usr/bin/env bash

# CentOS repo change from mirror to vault
sed -i -e 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/CentOS-*
sed -i -e 's/mirrorlist=/#mirrorlist=/g' /etc/yum.conf
sed -E -i -e 's/#baseurl=http:\/\/mirror.centos.org\/centos\/\$releasever\/([[:alnum:]_-]*)\/\$basearch\//baseurl=https:\/\/vault.centos.org\/7.9.2009\/\1\/\$basearch\//g' /etc/yum.repos.d/CentOS-*
sed -E -i -e 's/#baseurl=http:\/\/mirror.centos.org\/centos\/\$releasever\/([[:alnum:]_-]*)\/\$basearch\//baseurl=https:\/\/vault.centos.org\/7.9.2009\/\1\/\$basearch\//g' /etc/yum.conf

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

 

- ping_2_nds.sh

: 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

 

- config.sh

: ping 테스트 파일이 실행할 수 있도록 파일 권한을 744로 설정

#!/usr/bin/env bash
# modify permission  
chmod 744 ./ping_2_nds.sh

 

< 확인 리스트 >

  1. 4대의 가상 머신이 정상적으로 구성되는지
  2. 가상머신 한 곳에 접속해보기
  3. ping 파일을 실행해 접속한 가상머신에서 3대의 centOS와 통신하는데 문제없는지

 

1.

4대의 가상 머신이 정상적으로 구성

2.

가상머신 한 곳에 접속해보기

3.

ping 파일을 실행해 접속한 가상머신(m-k8s) 에서 3대의 centOS와 통신하는데 문제없는지

 


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

!오류 발생!

 

!해결!

푸티, 슈퍼푸티는 <동작중인 VM> 쉽게 접속할 수 있게 도와주는 터미널일 뿐, VM을 먼저 동작시켜야 한다

VM을 동작시킨다.
Conection ALL