1. Vagrant

Vagrant는 가상화 환경을 관리하고 프로비저닝하는 도구
다른 운영 체제나 호스트에서 동일한 개발 환경을 실행하기 위해 사용

2. Vagrant 명령어

# .VagrantFile 생성
vagrant init

# .VagrantFile 설정에 맞춰 vm start
vagrant up [vm명]

# vm에 vagrant 사용자로 ssh 접속
vagrant ssh [vm명]

# vm 중지
vagrant halt [vm명]

# vm 상태 확인
vagrant status

# vm 재시작
vagrant reload [vm명]

# vm 삭제
vagrant destroy [vm명]

# snapshot 생성
vagrant snapshot save [vm명] [snapshot명]

# snapshot 목록
vagrant snapshot list

# snapshot 적용
vagrant snapshot restore [vm명] [snapshot명]

3. .VagrantFile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "generic/rocky9"
  ################################################################################

    config.vm.define "iscsi1" do |config|
      config.vm.provider "virtualbox" do |vb|
        vb.memory = "1024"
        vb.cpus = "1"
        vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
        if !File.exist?("disk01.vdi")
          vb.customize ['createhd', '--filename', "disk01.vdi", '--size', 20480]
        end
        vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', "disk01.vdi"]
      end
    end


      config.vm.define "nfs" do |config|
        config.vm.provider "virtualbox" do |vb|
          vb.memory = "1024"
          vb.cpus = "1"
          vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
        end
      end


  (1..2).each do |i|
    config.vm.define "database#{i}" do |config|
      config.vm.provider "virtualbox" do |vb|
        vb.memory = "1024"
        vb.cpus = "1"
        vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
      end
    end
  end

  (1..2).each do |i|
    config.vm.define "webserver#{i}" do |config|
      config.vm.provider "virtualbox" do |vb|
        vb.memory = "1024"
        vb.cpus = "1"
        vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
      end
    end
  end

  config.vm.define "db_lb" do |config|
    config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
      vb.cpus = "1"
      vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
    end
  end

  config.vm.define "ws_lb" do |config|
    config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
      vb.cpus = "1"
      vb.customize ["modifyvm", :id, "--nic3", "natnetwork", "--nat-network3", "NatNetwork"]
    end
    config.vm.network "private_network", ip: "192.168.10.110", nic_type: "virtio"
  end

  config.vm.define "dns" do |config|
    config.vm.provider "virtualbox" do |vb|
      vb.memory = "1024"
      vb.cpus = "1"
      vb.customize ["modifyvm", :id, "--nic2", "natnetwork", "--nat-network2", "NatNetwork"]
    end
    config.vm.network "private_network", ip: "192.168.10.200", nic_type: "virtio"
  end


  config.vm.provision "shell", inline: <<-SHELL
    sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
    systemctl reload sshd
  SHELL
end

4. ssh 접속

# 먼저 up 명령어를 통해 부팅 후 ssh 접속을 시도
vagrant up database1
vagrant ssh database1

VM 부팅

SSH 접속하면 vagrant 라는 유저로 접속하며 sudo -i 라는 명령어로 password 없이 변경 가능

5. 결과

각각의 vm을 생성 완료

iSCSI를 위한 vm에는 disk mount

vagrant 설정에 맞춰 ip 할당 완료

0개의 댓글