🔹Openstack
Rocky Linux 8.10에 OpenStack 설치하기
terranbin
2025. 2. 3. 10:31
728x90
SMALL
- Rocky Linux 8.10에서 최신 OpenStack 버전( centos-release-openstack-yoga ) 설치
- Controller(192.168.98.166) + Compute(192.168.98.167) 노드 구성
- Horizon 웹 대시보드 UI를 통해 관리 가능
- 2025년 2월 기준으로 작성
- Rocky 8 기본 설치 방법: https://sungbin-park.tistory.com/100
- 참고 링크
1. 컨트롤러 노드 (Controller Node)
더보기
OS | Rocky8 |
CPU | 2 vCPU 이상 |
Memory (RAM) | 최소 4GB (권장: 8GB 이상) |
Network Adapter | 1개 (eth0) |
디스크 | /dev/sda (OS용, 20GB) |
/dev/sdb (스토리지용, 100GB) |
2. 컴퓨트 노드 (Compute Node)
더보기
OS | Rocky8 |
CPU | 2 vCPU 이상 |
Memory (RAM) | 최소 2GB (권장: 4GB 이상) |
Network Adapter | 1개 (eth0) |
디스크 | /dev/sda (OS용, 20GB) |
/dev/sdb (VM 데이터 저장용, 100GB) |
📌 추가 고려 사항
- 컨트롤러 노드는 OpenStack의 핵심 서비스를 실행하므로, 최소 4GB RAM, 2 vCPU 이상 필요.
- 컴퓨트 노드는 VM을 실행하는 역할이므로, 디스크 용량과 CPU 개수에 따라 확장 가능.
- 스토리지(Cinder) 추가 시 /dev/sdb 를 LVM 볼륨으로 구성하여 사용할 수 있음.
1️⃣ 공통 설정 (setup_common.sh) → 현재 RDO 저장소 확인 불가
https://trunk.rdoproject.org/rdo_release/(찾은거 같긴 한데 애매)
https://www.rdoproject.org/repos/(not found 여서 문제)
https://repos.fedorapeople.org/repos/openstack/(이거 같다)
#!/bin/bash
set -e # 오류 발생 시 즉시 종료
echo "🚀 OpenStack Yoga RDO 저장소 설치 시작"
# 1️⃣ RDO 저장소 추가
echo "[1] RDO 저장소 추가"
dnf install -y https://repos.fedorapeople.org/repos/openstack/archived/openstack-yoga/rdo-release-yoga-1.el8.noarch.rpm --setopt=sslverify=false
# 2️⃣ 저장소 상태 확인
echo "[2] 저장소 상태 확인"
if ! dnf repolist | grep -q "openstack-yoga"; then
echo "⚠️ OpenStack 저장소가 정상적으로 등록되지 않음"
exit 1
fi
# 3️⃣ 패키지 캐시 정리 및 업데이트
echo "[3] 패키지 캐시 정리 및 업데이트"
dnf clean all
if ! dnf makecache; then
echo "⚠️ 패키지 캐시 갱신 실패. 저장소를 다시 설정합니다."
dnf config-manager --disable centos-rabbitmq-38 || true
dnf config-manager --disable centos-nfv-openvswitch || true
dnf config-manager --disable advanced-virtualization || true
dnf makecache || echo "⚠️ 패키지 캐시 갱신 실패 (저장소 비활성화 후에도 실패)"
fi
# 4️⃣ 필수 패키지 설치
echo "[4] 필수 패키지 설치"
dnf install -y epel-release dnf-utils || echo "⚠️ 필수 패키지 설치 실패"
# 5️⃣ 데이터베이스 (MariaDB) 설치 및 설정
echo "[5] 데이터베이스 (MariaDB) 설치 및 설정"
if ! dnf install -y mariadb-server; then
echo "⚠️ MariaDB 설치 실패. 저장소 갱신 후 재시도."
dnf clean all
dnf makecache
dnf install -y mariadb-server || exit 1
fi
systemctl enable --now mariadb
# MariaDB 보안 설정 자동화
echo "[5-1] MariaDB 보안 설정 자동화"
mysql_secure_installation <<EOF
asdf
n
n
n
n
EOF
# 6️⃣ RabbitMQ 최신 버전 설치 (공식 저장소 사용)
echo "[6] RabbitMQ 설치 및 실행"
dnf install -y erlang
if ! dnf install -y https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/8/rabbitmq-server-3.9.13-1.el8.noarch.rpm/download.rpm; then
echo "⚠️ RabbitMQ 설치 실패. 저장소 갱신 후 재시도."
dnf clean all
dnf makecache
dnf install -y https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/8/rabbitmq-server-3.9.13-1.el8.noarch.rpm/download.rpm || exit 1
fi
systemctl enable --now rabbitmq-server || echo "⚠️ RabbitMQ 실행 실패"
# 7️⃣ OpenStack 클라이언트 설치 전 패키지 확인
echo "[7] OpenStack 클라이언트 패키지 확인"
if ! dnf list available | grep -q python3-openstackclient; then
echo "⚠️ OpenStack 클라이언트 패키지가 존재하지 않음. 저장소 갱신 후 재시도."
dnf clean all
dnf makecache
fi
# 8️⃣ OpenStack 클라이언트 설치
echo "[8] OpenStack 클라이언트 설치"
dnf install -y python3-openstackclient openstack-selinux || echo "⚠️ OpenStack 클라이언트 설치 실패"
# 9️⃣ OpenStack 핵심 서비스 패키지 설치
echo "[9] OpenStack 핵심 서비스 패키지 설치"
dnf install -y openstack-keystone openstack-glance openstack-nova openstack-neutron openstack-cinder openstack-dashboard || echo "⚠️ 일부 OpenStack 패키지 설치 실패"
# 🔟 OpenStack 서비스 활성화
echo "[10] OpenStack 서비스 활성화"
systemctl enable --now httpd openstack-keystone openstack-glance openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy openstack-neutron openstack-cinder || echo "⚠️ 일부 OpenStack 서비스 실행 실패"
echo "✅ OpenStack 설치 완료!"
# 1️⃣1️⃣ 최종 검증
echo "[11] 설치 확인"
dnf repolist | grep openstack || echo "⚠️ OpenStack 저장소가 정상적으로 등록되지 않음"
dnf list available | grep openstackclient || echo "⚠️ OpenStack 패키지가 검색되지 않음"
openstack --version || echo "⚠️ OpenStack CLI가 정상적으로 실행되지 않음"
2️⃣ Controller 설정 (setup_controller.sh) → Controller에서 실행
#!/bin/bash
set -e
echo "[1] Keystone (Identity 서비스) 설치"
dnf install -y openstack-keystone httpd mod_wsgi
cat << EOF > /etc/keystone/keystone.conf
[database]
connection = mysql+pymysql://keystone:password@controller/keystone
[token]
provider = fernet
EOF
keystone-manage db_sync
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
keystone-manage bootstrap --bootstrap-password admin --bootstrap-admin-url http://controller:5000/v3/ --bootstrap-internal-url http://controller:5000/v3/ --bootstrap-public-url http://controller:5000/v3/ --bootstrap-region-id RegionOne
echo "[2] Keystone 서비스 시작"
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
systemctl enable --now httpd
echo "[3] Glance (이미지 서비스) 설치"
dnf install -y openstack-glance
cat << EOF > /etc/glance/glance-api.conf
[database]
connection = mysql+pymysql://glance:password@controller/glance
EOF
glance-manage db_sync
systemctl enable --now openstack-glance-api
echo "[4] Nova (Compute API) 설치"
dnf install -y openstack-nova-api openstack-nova-conductor openstack-nova-novncproxy openstack-nova-scheduler
cat << EOF > /etc/nova/nova.conf
[DEFAULT]
transport_url = rabbit://openstack:password@controller
my_ip = $CONTROLLER_IP
EOF
nova-manage api_db sync
nova-manage cell_v2 map_cell0
nova-manage cell_v2 create_cell --name=cell1 --verbose
nova-manage db sync
systemctl enable --now openstack-nova-api openstack-nova-scheduler openstack-nova-conductor openstack-nova-novncproxy
echo "[5] Neutron (네트워크 서비스) 설치"
dnf install -y openstack-neutron-linuxbridge openstack-neutron-l3-agent openstack-neutron-dhcp-agent openstack-neutron-metadata-agent
cat << EOF > /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:password@controller
EOF
systemctl enable --now neutron-server neutron-dhcp-agent neutron-metadata-agent neutron-l3-agent
echo "[6] Horizon (대시보드) 설치"
dnf install -y openstack-dashboard
systemctl enable --now httpd
echo "[7] 컨트롤러 노드 설치 완료!"
3️⃣ Compute 설정 (setup_compute.sh) → Compute에서 실행
#!/bin/bash
set -e
echo "[1] Nova Compute 설치"
dnf install -y openstack-nova-compute
cat << EOF > /etc/nova/nova.conf
[DEFAULT]
transport_url = rabbit://openstack:password@controller
my_ip = $COMPUTE_IP
compute_driver = libvirt.LibvirtDriver
EOF
systemctl enable --now openstack-nova-compute
echo "[2] Libvirt 및 KVM 설치"
dnf install -y libvirt qemu-kvm
systemctl enable --now libvirtd
echo "[3] Neutron Compute Agent 설치"
dnf install -y openstack-neutron-linuxbridge openstack-neutron-metadata-agent
cat << EOF > /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:password@controller
EOF
systemctl enable --now neutron-linuxbridge-agent neutron-metadata-agent
echo "[4] 컴퓨트 노드 설치 완료!"
서비스 구성 표
Controller | Keystone | Identity 관리 |
Controller | Glance | 이미지 관리 |
Controller | Nova API | Compute API 서비스 |
Controller | Neutron | 네트워크 관리 |
Controller | Horizon | 웹 대시보드 |
Compute | Nova Compute | 가상 머신 실행 |
Compute | Neutron Linuxbridge | 네트워크 서비스 |
더보기
📌 Keystone 환경변수 설정 (컨트롤러 노드) / OpenStack 버전 확인 스크립트
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.98.166:5000/v3
# export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
Horizon 대시보드 접속 확인
- 웹 브라우저에서 http://192.168.98.166/dashboard 접속
- ID: admin / PW: admin
#!/bin/bash
# OpenStack 서비스 버전 확인 스크립트
echo "========================================"
echo "🚀 OpenStack 서비스 버전 확인 스크립트"
echo "========================================"
# 전체 OpenStack 버전 확인
echo "[1] OpenStack Client Version:"
openstack --version
echo ""
# Keystone 버전 확인
echo "[2] Keystone (Identity Service) Version:"
keystone-manage --version
echo ""
# Nova 버전 확인
echo "[3] Nova (Compute Service) Version:"
nova-manage --version
echo ""
# Neutron 버전 확인
echo "[4] Neutron (Networking Service) Version:"
neutron-server --version
echo ""
# Glance 버전 확인
echo "[5] Glance (Image Service) Version:"
glance-manage --version
echo ""
# Cinder 버전 확인
echo "[6] Cinder (Block Storage Service) Version:"
cinder-manage --version
echo ""
# Horizon (Dashboard) 버전 확인
echo "[7] Horizon (Dashboard) Version:"
rpm -qi openstack-dashboard | grep Version || dpkg -s openstack-dashboard | grep Version
echo ""
# Swift 버전 확인
echo "[8] Swift (Object Storage) Version:"
swift --version
echo ""
# 모든 OpenStack 패키지 버전 확인
echo "[9] OpenStack Installed Packages:"
dnf list installed | grep openstack || rpm -qa | grep openstack
echo ""
echo "========================================"
echo "✅ OpenStack 버전 확인 완료!"
echo "========================================"
LIST