콘텐츠로 이동

🟥 OpenStack Ironic 베어메탈 구축 가이드 (Final Master)

작성일: 2026-01-14 아키텍처: Controller-Network 분리형 (Ironic 서비스 전체를 Network Node로 이동) 대상 장비:

  • Controller (cstation): 제어(API), DB, 메시지큐 (기존 유지)
  • Network Node (cstrato1): Ironic 서비스, OVS, 물리 연결(eno4)
  • Baremetal (HP G8): 타겟 장비 (2대)

1. [Controller] 잔여 설정 확인 (충돌 방지)

[Controller Node - cstation]에서 수행

Network Node로 역할을 넘기기 전, Controller에 혹시 남아있을 수 있는 설정을 정리합니다.

# 1. Controller에 br-ironic이 없어야 정상
ip addr show br-ironic
# -> 만약 있다면: sudo ip link delete br-ironic

# 2. Netplan에서 eno4 IP가 없는지 확인
cat /etc/netplan/50-cloud-init.yaml

# 3. Systemd 잔여 확인
ls /etc/systemd/system/setup-br-ironic.service
# -> 만약 있다면: sudo rm /etc/systemd/system/setup-br-ironic.service && sudo systemctl daemon-reload

2. [Baremetal] 사전 준비 (Target Node) - 방법 선택

베어메탈 노드(HP G8)의 BIOS와 iLO를 설정합니다. 아래 두 가지 방법 중 하나를 선택하세요.

✅ [옵션 A] 현장 작업 (모니터/키보드 연결)

서버실에 들어가서 직접 모니터를 보고 작업하는 경우입니다.

  1. iLO IP 설정: 부팅 시 F8 진입 → IP 10.10.10.69 (Node1) / 10.10.10.70 (Node2) 설정.
  2. BIOS 설정: 부팅 시 F9 진입.
    • Boot Mode: Legacy BIOS Mode (필수)
    • Network Boot Options: NIC 1을 1순위로.
    • Power Management: Static High Performance.
  3. MAC 확인: OS 진입 후 ip link show eno1 또는 BIOS 메뉴에서 확인.

✅ [옵션 B] 원격 작업 (SSH & Text Console)

서버실에 가지 않고, 현재 설치된 OS(Ubuntu 등)에 SSH로 접속해 작업하는 경우입니다.

Step 1: OS에서 iLO IP 설정 및 MAC 확인

# (Baremetal OS 터미널에서 수행)
# 1. MAC 주소 기록
ip link show eno1 | grep ether
# 예: ac:16:2d:77:93:94

# 2. ipmitool 설치
sudo apt update && sudo apt install ipmitool -y
sudo modprobe ipmi_devintf && sudo modprobe ipmi_si

# [중요] 2-1. IPMI 드라이버 정상 동작 확인
# 아래 명령어를 쳤을 때 제조사 정보(Device ID, Manufacturer 등)가 떠야 정상입니다.
# 만약 "Could not open device..." 에러가 나면 하드웨어 지원 문제거나 재부팅 필요.
sudo ipmitool mc info

# [중요] 2-2. 올바른 LAN 채널 번호 찾기 (1번 또는 2번, 드물게 8번)
# 보통 HPE는 2번, Dell은 1번입니다.
# 아래 명령어를 하나씩 입력해서 "IP Address" 등의 정보가 뜨는 채널이 정답입니다.

echo "--- Channel 1 확인 ---"
sudo ipmitool lan print 1

echo "--- Channel 2 확인 ---"
sudo ipmitool lan print 2

# (Tip: "Invalid channel" 이라고 뜨면 그 번호는 아닙니다.)
# (HPE G8/G9/G10은 대부분 '2번'이 정답입니다.)

# 3. iLO IP 설정 (예: Node 1)
sudo ipmitool lan set 2 ipsrc static
sudo ipmitool lan set 2 ipaddr 10.10.10.69
sudo ipmitool lan set 2 netmask 255.255.255.0
sudo ipmitool lan set 2 defgw ipaddr 10.10.10.1

# 4. iLO 계정 설정
sudo ipmitool user set password 2 "FVQBAQ2Q"
sudo ipmitool user enable 2

설정이 적용되었는지 확인합니다.

# 채널 2번(HP Dedicated iLO Port)의 설정값 출력
sudo ipmitool lan print 2

# 결과 예시
# IP Address Source: Static Address (중요)
# IP Address: 10.10.10.69
# Subnet Mask: 255.255.255.0
# Default Gateway IP: 10.10.10.1
# 사용자 활성화 확인
sudo ipmitool user list 2

# 결과 예시
# ID  Name             Callin  Link Auth  IPMI Msg   Channel Priv Limit
# 1   Administrator    true    false      true       ADMINISTRATOR
# 2   admin            true    false      true       ADMINISTRATOR

iLO Advanced 라이센스 유무에 따라 둘 중 하나를 택해서 진행합니다.

Step 2-1: 서버실 이동(iLO Advanced 라이센스 X)

아래 설정만 직접 해줍니다.

  1. BIOS 설정: 부팅 시 F9 진입.
    • Boot Mode: Legacy BIOS Mode (필수)
    • Network Boot Options: NIC 1을 1순위로.

Step 2-2: iLO 원격 콘솔로 BIOS 설정(iLO Advanced 라이센스 필요)

아래 작업은 iLO Advanced 라이센스가 필요합니다. 또한 아래 iLO 포트가 연결되어야 합니다.

# (내 PC 또는 Controller에서 수행)
# 1. iLO SSH 접속
ssh Administrator@10.10.10.69
# (비밀번호: FVQBAQ2Q)

# 2. 텍스트 콘솔 실행
hpiLO-> TEXTCONS

# 3. 재부팅 및 F9 진입
# (다른 터미널에서 서버를 reboot 하거나, iLO에서 power reset)
# 화면에 "Press F9"가 나오면 [F9] 키 연타 (안 되면 [Esc]+[9])

# 4. BIOS 설정 (방향키 사용)
# - System Options -> Boot Mode -> Legacy BIOS Mode
# - Network Options -> Network Boot -> NIC 1 (1st)
# - Power Management -> Static High Performance
# - [F10] 저장 및 종료

3. [물리 작업] 케이블 연결

서버실에 들어가서 물리 포트 위치를 변경해줍니다. 환경에 따라 연결할 포트, 스위치 등이 다를 수 있으니 환경에 맞춰 진행합니다.

+-------------------------+              +-------------------------+
| Network Node (cstrato1) |              | Baremetal Node (HP G8)  |
|                         |              |                         |
|      [eno4] (New)       |              |      [NIC 1] (Data)     |
+---------+---------------+              +------------+------------+
          |                                           |
          |                                           |
          v                                           v
+------------------------------------------------------------------+
|               Unmanaged Switch (Provisioning Net)                |
|           (DO NOT CONNECT TO OFFICE NETWORK / INTERNET)          |
|                 subnet: 172.20.50.0/24                           |
+------------------------------------------------------------------+


--------------------------------------------------------------------


+-------------------------+              +-------------------------+
|     Intranet Switch     |              | Baremetal Node (HP G8)  |
|   (Office Network)      |              |                         |
|   subnet: 10.10.10.x    +------------->|       [iLO] (Mgmt)      |
+-------------------------+              +-------------------------+

포트 작업 완료 후, 컨트롤 노드에서 아래 작업을 수행하여 정상 동작을 확인합니다.

[Controller Node - cstation]에서 수행

# 1. 핑 테스트 (네트워크 연결 확인)
ping -c 3 10.10.10.69

# 2. 실제 로그인 및 전원 상태 확인 (비밀번호 검증)
# (비밀번호 'FVQBAQ2Q'는 예시입니다. 실제 설정한 값을 넣으세요)
ipmitool -I lanplus -H 10.10.10.69 -U Administrator -P 'FVQBAQ2Q' power status

4. [Network Node] 네트워크 및 OVS 설정

[Network Node - cstrato1] 에서 수행

4-1. Netplan 수정 (IP 제거)

sudo nano /etc/netplan/50-cloud-init.yaml
# 아래 내용을 추가 혹은 수정
...
    eno4:
      dhcp4: false
      dhcp6: false
      optional: true

수정했으면 아래 명령어로 적용합니다.

sudo netplan apply

4-2. 브리지 생성 및 IP 할당 스크립트

Ironic이 이 노드에 있으므로, Gateway IP(172.20.50.1) 를 여기서 할당합니다.

sudo tee /usr/local/bin/setup-br-ironic.sh << 'EOF'
#!/bin/bash
set -e
if ! docker ps | grep -q openvswitch_vswitchd; then
    echo "❌ OVS 컨테이너 없음. Network Node 확인 요망"
    exit 1
fi

# 1. 브리지 및 포트 연결
docker exec openvswitch_vswitchd ovs-vsctl --may-exist add-br br-ironic
docker exec openvswitch_vswitchd ovs-vsctl --may-exist add-port br-ironic eno4

# 2. [필수] Gateway IP 할당
sudo ip link set br-ironic up
sudo ip addr flush dev br-ironic 2>/dev/null || true
sudo ip addr add 172.20.50.1/24 dev br-ironic

# 3. 물리 포트 정리
sudo ip addr flush dev eno4 2>/dev/null || true

echo "✅ br-ironic (172.20.50.1) 설정 완료"
EOF

sudo chmod +x /usr/local/bin/setup-br-ironic.sh
sudo /usr/local/bin/setup-br-ironic.sh

4-3. 재부팅 대비 (Systemd 등록)

배포 도중 재부팅되어도 설정이 유지되도록 미리 등록합니다.

sudo tee /etc/systemd/system/setup-br-ironic.service << 'EOF'
[Unit]
Description=Setup OVS br-ironic bridge for Ironic
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
ExecStartPre=/bin/sleep 30
ExecStart=/usr/local/bin/setup-br-ironic.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable setup-br-ironic.service

5. [Controller] Kolla 설정 및 배포

[Controller Node - cstation] 에서 수행

5-1. Inventory 수정 (핵심)

Ironic 서비스를 Network Node 그룹으로 이동합니다.

sudo nano /etc/kolla/inventory/multinode
# [수정 전]
# [ironic:children]
# control

# [수정 후] 기존 control을 지우고 network로 변경
[ironic:children]
network

5-2. globals.yml 수정

sudo nano /etc/kolla/globals.yml
enable_ironic: "yes"
enable_ironic_neutron_agent: "yes"
enable_ironic_pxe: "yes"
enable_ironic_ipxe: "yes"

# [중요] Network Node의 브리지 이름 지정
ironic_dnsmasq_interface: "br-ironic"

# DHCP 범위
ironic_dnsmasq_dhcp_ranges:
  - range: "172.20.50.10,172.20.50.50"
    routers: "172.20.50.1"

# 초기엔 none
ironic_cleaning: "none"

neutron_ml2_flat_networks: "physnet1,physnet_ironic"

# Ironic API가 Network Node에 있으므로, 해당 노드의 IP를 지정
ironic_internal_fqdn: "10.10.10.61"
ironic_external_fqdn: "10.10.10.61"
ironic_api_port: "6385"

5-3. Neutron Config Override

sudo mkdir -p /etc/kolla/config/neutron
sudo tee /etc/kolla/config/neutron/openvswitch_agent.ini << 'EOF'
[ovs]
bridge_mappings = physnet1:br-ex,physnet_ironic:br-ironic
EOF

sudo tee /etc/kolla/config/neutron/ml2_conf.ini << 'EOF'
[ml2_type_flat]
flat_networks = physnet1,physnet_ironic
EOF

5-4. 서비스 배포

# 1. Ironic 배포 (cstrato1에 설치됨)
kolla-ansible deploy -i multinode --tags ironic

# 2. Neutron 설정 갱신 (매핑 적용)
kolla-ansible reconfigure -i multinode --tags neutron

# 3. Nova 설정 갱신 (Driver 인식)
kolla-ansible reconfigure -i multinode --tags nova

6. [Controller] 리소스 생성

[Controller Node - cstation]에서 수행

6-1. 네트워크 생성

openstack network create --share --provider-network-type flat \
  --provider-physical-network physnet_ironic provisioning-net

# Gateway는 Network Node에 할당한 IP(172.20.50.1)와 일치해야 함
openstack subnet create --network provisioning-net \
  --subnet-range 172.20.50.0/24 \
  --gateway 172.20.50.1 \
  --allocation-pool start=172.20.50.10,end=172.20.50.50 \
  --dns-nameserver 8.8.8.8 provisioning-subnet

6-2. 라우터 생성(외부 접근용)

# 1. 현재 외부망 이름 확인
openstack network list --external
# 결과 예: external (이 이름을 아래에서 사용)

# 2. 라우터 생성
openstack router create ironic-router

# 3. 외부망 연결 (Gateway 설정)
# "external" 부분을 실제 외부망 이름으로 변경하세요
openstack router set --external-gateway external ironic-router

# 4. 배포망 연결 (Interface 추가)
openstack router add subnet ironic-router provisioning-subnet

# 5. 라우터 상태 확인
openstack router show ironic-router

6-3. Cleaning 활성화

네트워크가 생성되었으므로 Cleaning을 켭니다.

sudo nano /etc/kolla/globals.yml
ironic_cleaning: "metadata"
ironic_cleaning_network: "provisioning-net"
# 설정 적용
kolla-ansible reconfigure -i multinode --tags ironic

6-4. 이미지 및 Flavor 생성

# 작업 디렉토리
mkdir -p ~/ironic_images && cd ~/ironic_images

# IPA 이미지 다운로드
wget https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-master.kernel
wget https://tarballs.opendev.org/openstack/ironic-python-agent/dib/files/ipa-centos9-master.initramfs

# IPA 이미지 등록
openstack image create --file ipa-centos9-master.kernel \
  --public --container-format aki --disk-format aki deploy-kernel
openstack image create --file ipa-centos9-master.initramfs \
  --public --container-format ari --disk-format ari deploy-ramdisk

# OS 이미지 다운로드 및 등록
wget https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
openstack image create --file jammy-server-cloudimg-amd64.img \
  --disk-format qcow2 --container-format bare \
  --property hypervisor_type=ironic \
  --public ubuntu-22.04

# Flavor 생성
openstack flavor create --ram 65536 --vcpus 24 --disk 500 \
  --property resources:VCPU=0 \
  --property resources:MEMORY_MB=0 \
  --property resources:DISK_GB=0 \
  --property resources:CUSTOM_BAREMETAL_HP_G8=1 \
  bm.hp-g8

6-5. 노드 등록 (2대)

만약 Ironic 플러그인이 없다면 먼저 설치합니다.

# 1. Ironic 클라이언트 플러그인 설치
pip install python-ironicclient

# 2. 설치가 잘 됐는지 확인 (이제 명령어가 먹혀야 합니다)
openstack baremetal list

아래 node1을 등록하듯이, 값만 바꿔서 여러 노드를 등록할 수 있습니다.

KERNEL_ID=$(openstack image show deploy-kernel -f value -c id)
RAMDISK_ID=$(openstack image show deploy-ramdisk -f value -c id)
ILO_PASS="FVQBAQ2Q"

# Node 1 등록
openstack baremetal node create --driver ipmi --name hp-g8-01 \
  --driver-info ipmi_address=10.10.10.69 \
  --driver-info ipmi_username=Administrator \
  --driver-info ipmi_password=$ILO_PASS \
  --driver-info deploy_kernel=$KERNEL_ID \
  --driver-info deploy_ramdisk=$RAMDISK_ID \
  --resource-class BAREMETAL_HP_G8 \
  --network-interface flat \
  --property cpus=24 --property memory_mb=65536 --property local_gb=500

# 생성된 baremetal node의 uuid 확인
openstack baremetal node list | grep hp-g8-01

# 등록
openstack baremetal port create --node <hp-g8-01의 uuid> "ac:16:2d:77:93:94"

7. [Controller] 최종 검증

[Controller Node - cstation]에서 수행

# 1. 연결 확인
openstack baremetal node validate [Node_UUID]

# 출력 결과
+------------+--------+--------+
| Interface  | Result | Reason |
+------------+--------+--------+
| boot       | True   |        |
| deploy     | True   |        |
| management | True   |        |
| network    | True   |        |
| power      | True   |        |
+------------+--------+--------+

출력 결과에 위 항목들은 True 가 나와야 합니다. (다른 기능은 부가 혹은 고급 기능들입니다.)

만약 deployMissing are: ['instance_info.image_source'] 항목이 뜬다면 아직 instance 배포 전이기 때문에 OS가 결정되지 않아서 나오는 오류입니다. 즉, 배포 시 사라질 오류입니다.

Driver ipmi does not support 이 출력되는 것은 현재 드라이버가 지원하지 않는 것입니다.

전체 기능은 다음과 같습니다.

항목 (Interface) 현재 상태 중요도 기능 설명 (역할) 비고 (현재 상황 분석)
Power True 필수 전원 제어 (On/Off/Reboot) Ironic이 서버 전원을 켜고 끌 수 있음 (성공)
Management True 필수 관리 통신 (BMC/iLO 연결) Ironic과 서버 간의 제어 채널 연결됨 (성공)
Boot True 필수 부팅 순서 제어 (PXE ↔ Disk) 설치 시 네트워크(PXE), 완료 시 디스크 부팅 전환 가능
Network True 필수 네트워크 검증 멀티테넌트 네트워킹 설정 확인 완료
Deploy False 필수 OS 설치 (이미지 굽기) 오류 아님. 배포할 OS 이미지를 지정하지 않아 대기 중인 상태
Storage True 선택 스토리지 연결 Cinder 볼륨 등을 붙일 때 사용 (현재는 로컬 디스크 사용)
Console False 선택 원격 화면 보기 (VNC/Serial) ipmi 드라이버 미지원 기능 (없어도 설치에 지장 없음)
Inspect False 선택 하드웨어 스펙 자동 탐지 CPU/RAM 등을 자동 등록하는 기능 (수동 입력했으므로 불필요)
RAID False 선택 RAID 구성 디스크 미러링 등 설정 (단일 디스크 사용 시 불필요)
BIOS False 선택 BIOS 설정 변경 원격 BIOS 설정 (이미 수동 설정했으므로 불필요)
Rescue False 선택 응급 복구 장애 발생 시 복구용 OS 부팅 (운영 단계 기능)
# 1. 관리 모드 전환 (Ironic -> iLO 연결 테스트)
openstack baremetal node manage [Node_UUID]

# 2. 하드웨어 스펙 검사 (선택 사항이지만 추천 - CPU/RAM 자동 등록됨)
watch -n 5 "openstack baremetal node list"

# (이때 스위치를 통해 PXE 부팅이 한 번 일어납니다!)
openstack baremetal node inspect [Node_UUID]

# 3. 사용 가능 모드 전환 (Cleaning 수행됨 -> 전원 켜짐/꺼짐 반복)
openstack baremetal node provide [Node_UUID]

# 4. Keypair 생성
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey 2>/dev/null || true

# 5. 인스턴스 생성 (available 상태가 된 후)
openstack server create --flavor bm.hp-g8 --image ubuntu-22.04 --network provisioning-net --key-name mykey test-bm

# 6. 상태 확인
watch openstack server list

8. 트러블슈팅

  • IPMI 에러:
# Controller에서 실행
ipmitool -I lanplus -H 10.10.10.69 -U Administrator -P 'FVQBAQ2Q' power status
  • OVS 확인:
# Network Node에서
docker exec openvswitch_vswitchd ovs-vsctl show
  • Ironic 로그:
# Network Node에서
docker logs ironic_conductor --tail 100
  • PXE 패킷:
# Network Node에서
sudo tcpdump -i br-ironic -n port 67 or port 68
  • Node 에러:
# Controller에서 실행
openstack baremetal node show hp-g8-01 -f json | jq '.last_error'

📋 최종 체크리스트

  • [ ] 1. Controller 잔여 설정 확인/삭제
  • [ ] 2. Baremetal BIOS(Legacy) 및 iLO 설정
  • [ ] 3. 물리 케이블 연결 (Network Node)
  • [ ] 4. Network Node 설정 (Netplan, Script, Systemd)
  • [ ] 5. Inventory 수정 ([ironic] -> network)
  • [ ] 6. 서비스 배포 (deploy -> reconfigure)
  • [ ] 7. 리소스 생성 (Network, Cleaning활성화, Image, Node)
  • [ ] 8. 검증 (Manage -> Provide -> Create)

📌 [별첨] 왜 이렇게 복잡하게 연결했는가? (Architecture Review)

지금 구성이 복잡해 보이지만, 사실 "오픈스택의 표준""현실적인 제약(보안 이슈)" 사이에서 최적의 타협점을 찾은 결과입니다. 각 연결의 목적과 데이터 흐름을 명확히 정리해 드립니다.


1. 굳이 분리해서 연결한 이유 (The "Why")

우리는 두 개의 서로 다른 네트워크 경로를 만들었습니다.

A. Controller ↔ iLO (직결)

  • 역할: [관리망 (Management Network)]
  • 비유: 컴퓨터의 "전원 버튼""모니터 선"을 연결한 것.
  • 이유:
  • 오픈스택(Ironic)이 베어메탈 서버를 켜고 끄기 위해 필요합니다.
  • 원래는 사내 스위치를 쓰려 했으나, MAC 보안 문제(포트 차단) 때문에 스위치를 못 쓰게 되어서 부득이하게 직결했습니다.
  • 데이터(인터넷, 파일 전송)는 이리로 다니지 않습니다. 오직 "전원 ON/OFF" 명령만 다닙니다.

B. Network Node ↔ NIC 1 (깡통 스위치)

  • 역할: [데이터망 (Data/Provisioning Network)]

  • 비유: 컴퓨터의 "랜선"을 연결한 것.

  • 이유:

  • 실제 OS 설치 파일(3GB+)을 전송하고, 나중에 사용자가 SSH 접속을 하거나 웹 서비스를 돌릴 때 쓰는 진짜 통로입니다.
  • 사내망과 섞이면 DHCP 충돌이 나므로, 깡통 스위치로 물리적 격리를 시킨 것입니다.

2. 각 포트의 역할 정의

포트 이름 연결 대상 역할 (Mission) 트래픽 종류
iLO Controller (eno4) 원격 제어 (Remote Control) 전원 켜기/끄기, 부팅 순서 변경, 센서 감시
NIC 1 Network Node (br-ironic) 실제 통신 (Data Plane) PXE 부팅, OS 설치, SSH 접속, 서비스 트래픽

3. 네트워크 흐름 (Traffic Flow)

상황 1: 인스턴스 생성 시 (Provisioning)

사용자가 openstack server create 명령을 내렸을 때:

  1. 전원 켜기:
    • ClientController (Nova/Ironic)[직결 라인]Baremetal iLO
    • 명령: "야, 일어나! (Power On)"
  2. OS 설치 (PXE):
    • Baremetal (깨어남)NIC 1[깡통 스위치]Network Node (DHCP/TFTP)
    • 데이터: "IP 주세요!", "OS 이미지 주세요!" (수 기가바이트 전송)

상황 2: Floating IP로 접속 시 (SSH)

사용자가 ssh ubuntu@10.10.10.200 (Floating IP)으로 접속할 때:

  1. 진입:
    • Client사내망Network Node (외부망 인터페이스)
  2. 변환 (NAT):
    • Network Node (Router): "10.10.10.200은 내부의 172.20.50.15구나." (DNAT)
  3. 도착:
    • Network Nodebr-ironic[깡통 스위치]Baremetal NIC 1
    • iLO(직결 라인)는 전혀 쓰이지 않습니다. 오직 데이터망(NIC 1)만 사용합니다.

🚀 [별첨] Future Architecture: To-Be Model

지금은 물리적 제약과 보안 이슈로 인해 "직결 + 깡통 스위치"라는 우회로를 택했지만, 운영 환경이 안정화되고 규모가 커진다면 표준화된 아키텍처로 나아가야 합니다.

우리가 지향해야 할 이상적인 베어메탈 네트워크 구성을 제안합니다.


1. 이상적인 구성도 (Target Architecture)

Ironic 구조도


2. 무엇이 달라지는가? (Key Improvements)

A. "깡통" 대신 "매니지드(L3) 스위치" 도입

  • 현재: 깡통 스위치는 VLAN을 모릅니다. 그래서 물리적으로 선을 따로따로(iLO용, 데이터용) 꽂아야 했습니다.
  • 미래: VLAN 지원 스위치(ToR)를 도입합니다.
  • 스위치 하나에 모든 선을 꽂고, 소프트웨어(VLAN)로 망을 나눕니다.
  • VLAN 10: iLO 관리망
  • VLAN 20: 베어메탈 배포망
  • 효과: 선 정리가 깔끔해지고, 포트 낭비가 사라집니다.

B. Controller 직결 제거 (표준화)

  • 현재: Controller와 iLO를 1:1로 연결했습니다. (Controller가 죽으면 iLO 제어 불가능)
  • 미래: iLO를 관리망 스위치(VLAN 10)에 연결합니다.
  • Controller, Network Node 어디서든 iLO에 접근할 수 있습니다.
  • 효과: 고가용성(HA) 확보. Controller 1번이 죽어도 2번이 iLO를 제어할 수 있습니다.

C. Multi-Tenant Network (진정한 클라우드)

  • 현재: NIC 1은 오직 '배포망'으로만 씁니다. 서비스용으로 쓰려면 Floating IP를 붙여야 합니다.
  • 미래: Neutron ML2/OVS가 스위치 포트 설정을 동적으로 바꿉니다.
  • 배포할 땐 VLAN 20(배포망)으로 썼다가,
  • OS 설치가 끝나면 자동으로 VLAN 100(인사팀망), VLAN 200(개발팀망)으로 포트 성격을 바꿉니다.
  • 효과: 베어메탈 서버도 VM처럼 원하는 네트워크에 자유롭게 배치할 수 있습니다.

3. 단계별 로드맵 (Roadmap)

1단계: 현재 (Stabilization)

  • 목표: 일단 되게 하라. (기능 구현)
  • 구성: Controller 직결 + 깡통 스위치 격리.
  • 한계: 확장성 부족, 수동 관리 포인트 존재.

2단계: 네트워크 통합 (Integration) - [권장 다음 단계]

  • 목표: 깡통 스위치 제거 및 사내망 통합.
  • 선결 과제: 사내 네트워크 팀과 협의하여 MAC 보안 예외 처리iLO 전용 VLAN 할당.
  • 작업:
  • 직결 라인 제거 → 사내 스위치로 통합.
  • 깡통 스위치 제거 → 사내 스위치(VLAN 분리)로 통합.

3단계: 자동화 및 고도화 (Optimization)

  • 목표: 스위치 설정 자동화 (Networking-Generic-Switch).
  • 작업: Ironic이 직접 물리 스위치의 설정을 제어하도록 연동.