본문 바로가기
프로그램 활용/클라우드 가상화 도커

[작업중] ubuntu devstack을 이용한 openstack 설치 및 문제해결

by 3604 2022. 9. 12.
728x90
Ubuntu 18.04 LTS에서 OpenStack 설치하기

출처: https://louky0714.tistory.com/57

 

출처: https://flymogi.tistory.com/entry/Ubuntu-1804-LTS에서-OpenStack-설치하기 [하늘을 난 모기:티스토리]

 

어제까지만 해도 vm으로는 안될거라고 생각했는데,
OpenStack을 발견하고 희망을 찾았다.

우선.. vm에서 알수 없던 오류가 나는 이유를 알았다.
서버의 가상화 옵션을 꺼두었기 때문에 64bit를 실행할 경우 에러가 발생했던 문제였다.

서버를 재부팅하고, bios 모드로 들어가서 각 환경에 따라 CPU 가상화 모드를 enable로 변경한다.

virtualbox를 설치하고, (데스크탑 모드여서 그냥 화면 보고 설치했다.)

아래 블로그를 참고하여 OpenStack을 꾸리기 시작했다.

https://jbhs7014.tistory.com/m/59

전반적으로 이 분의 블로그 참고를 많이 했으며, 몇가지 주의해야 할 사항을 추가하자면,

$ sudo apt update
$ sudo apt install -y python3-pip python3-dev
$ sudo pip3 install --upgrade pip
$ sudo pip3 install python-openstackclient

./stack.sh 를 실행하기 전에 pip3를 설치해야한다.

아마 설치하지 않고 진행할 경우 

You are using pip version 19.0.3, however version 20.2b1 is available.

You should consider upgrading via the ‘pip install —upgrade pip’ command

이런 주의 표시가 뜨고, pip와 관련된 뭐시기 에러가 나온다.

혹시나 pip 설치를 해도 안된다면,
/devstack/tools 디렉터리로 이동하여, cap-pip.txt 파일을 열어

# cap-pip.txt
pip!=8,<10

이렇게 되어있던 코드를

# cap-pip.txt
pip!=8

이렇게 변환시키고 다시 실행시켜보자.


설치를 완료 했으면,

ip로 접근을 시도하자.

만약 dashboard에 접근이 되지 않는다면, vm옵션에서 네트워크 설정을 net 대신 어뎁터에 브릿지로 변경한다.

그리고,, 귀찮지만,

./unstack.sh
./clean.sh

실행시키고 다시

./stack.sh를 실행시킨다.

 

출처: https://flymogi.tistory.com/entry/Ubuntu-1804-LTS에서-OpenStack-설치하기 [하늘을 난 모기:티스토리]

 

 

 

 

 

작업중

 참고 사이트 : https://400error.tistory.com/31

                      https://itguava.tistory.com/40?category=846530

                    https://louky0714.tistory.com/57

클라우드 컴퓨팅은 네트워크/인프라에 대한 지식이 필수다. 언제 다 공부할 수 있을지 모르겠다.

  • 네트워크 프로토콜
  • 네트워크 가상화 : SDN, NFV
  • 블록 스토리지, 오브젝트 스토리지
  • 서버 운영체제 설치 및 설정
  • 서버 가상화 : 하이퍼바이저 vs 컨테이너
  • 가상화 솔루션(Vmware, KVM 등)
  • DevOps
  • Infrastructure as a Code
  • 퍼블릿/프라이빗 서브넷 VPC 생성
  • VPG
  • DNS, Route 53
  • 로드 밸런싱
  • TCP/IP 네트워크 관리
  • 보안 그룹과 네트워크 ACL 접근 제어
  • 위의 이론을 통해 실제 사내망과 접목시킨 교육
  • 프라이빗 클라우드 아키텍처에 필요한 네트워크 설계

하드웨어

  • 네트워크 장비 : 스위치, 라우터 등
  • 스토리지 장비
  • 서버 장비(내부 구조 분석)
  • 데이터센터 구성요소(서버 랙, 서버(하드웨어))

 

ㅁ 아래 내용대로 하면 오류가 발생

    - python 호환성 문제 ?

    - 설치시 명령어:

       $FORCE=yes ./stack.sh

출처: https://delightwook.tistory.com/40

오픈스택 연구하기 : Devstack으로 오픈스택 빠르게 설치하기 

안녕하세요 김민욱입니다. 

 

이번 포스팅에서는 Devstack을 이용해서 오픈스택을 빠르게 구축해보겠습니다. Devstack은 오픈스택을 설치하기 위한 자동화 툴입니다. 오픈스택을 구축하는 방법으로는 매뉴얼대로 설치하는 방법과 자동화 툴을 이용하는 방법이 있습니다. 

 

사실 매뉴얼에 대한 설치 방법은 많이 지원하지 않는 프로젝트들도 많이 있고, 무엇보다도 시간이 오래 걸립니다. 직접 프로젝트 데이터베이스 테이블을 생성한다던지, 사용자를 생성한다던지의 여러 과정이 각 프로젝트마다 있기 때문입니다.  

 

따라서 이제는 자동화 툴을 사용하시는 것을 추천드립니다. 제가 다양한 자동화 툴을 사용해본 것은 아니지만, 분명 자동화는 인프라 기술에서 중요한 기능 중 하나입니다. 따라서 저에게 가장 익숙하면서도 많이 사용해본 Devstack을 통해 자동적으로 간편하게 오픈스택을 구축하도록 하겠습니다.( 사실 다른 자동화 툴들은 사용해본 바가 없습니다. ) 

 

 

추가적으로 제 블로그에 나와있는 오픈스택 프로젝트들은 해당 포스팅을 통해 모두 설치하실 수 있습니다.

만약 제 블로그에서 해보고 싶으셨던 프로젝트가 있으시다면 해당 포스팅을 참고하시면 될 것 같습니다.  

 

Ubuntu 16.04에서 Master 버전(Trein 이후)을 기준으로 설치하였습니다.(2019.10.21)

Ubuntu 18.04 서버 버전에서 Master 버전을 기준으로 업데이트하였습니다.(2020.05.11)

* Ubuntu 18.04의 경우 데스크탑 버전이 아닌 서버 버전에서 설치를 추천드립니다. 

 

 

 

네트워크설정 및 구성

많은 분들께서 아실 테지만, 그래도 처음부터 해보기 위해 Ubuntu 16.04를 설치한 직후부터 설명을 드리겠습니다. 네트워크 구성에 대해 잘 아시는 분들께서는 뒤로 가셔서 Devstack 설치 템플릿만 참고하셔도 될 것 같습니다. 

 

먼저 Ubuntu를 설치하시고, root 계정에서 작업하시기를 추천드립니다. 해당 사항은 어디까지나 개인적인 생각이므로 꼭 root로 안하셔도 될 듯합니다.  일반적으로 VMware에 오픈스택을 실습용으로 구축하실 텐데 이 부분은 자료도 많을 뿐만 아니라 다른 블로그에서도 포스팅을 많이 되어 있는 것으로 확인됩니다. 따라서 이번 포스팅에서는 오픈스택을 NUC이라는 미니 Intel PC에 구축합니다. 성능뿐만 아니라 개발에 필요한 정도의 성능을 가지고 있기 때문입니다.

 

 

먼저 root로 로그인을 하시고 네트워크 설정부터 진행을 하도록 합니다 . 네트워크는 총 2개의 인터페이스가 필요한데, 그림 1의 물리 네트워크 구성도와 같이 일반적으로 내장되어있는 네트워크 인터페이스와 USB 네트워크 인터페이스를 사용합니다.

 

그림 1. 네트워크 구성도

이렇게 두개의 네트워크 인터페이스가 하나의 유무선 공유기(AP)에 물려 있습니다. USB에 꽂혀 있는 USB LAN을 통해서는 mini pc 관리를 위해 실제 IP 주소가 할당됩니다. 이는 유무선 공유기에서 DHCP를 통해 랜덤 하게 private 아이피를 지정해주거나, static으로 원하는 아이피를 해당 네트워크 인터페이스에 할당할 수도 있습니다.  한마디로 USB LAN을 통해서 오픈스택 패키지를 설치하거나, 관리하기 위해 SSH 접근을 진행합니다. 

 

 

그럼 나머지 NIC 카드로는 무엇을 할까요? 해당 NIC 카드는 가상머신들이 외부와 통신하기 위해 사용합니다. 물론 NIC 카드 하나로 내부 네트워크 구성을 통해 가상 머신들이 외부와 통신하도록 할 수도 있지만, 저의 경우는 네트워크 구성을 최대한 간편하게 하는 것을 선호하기 때문에 그림 2 실제 인터페이스와 같이 네트워크 인터페이스를 두 개로 나눕니다. 

 

그림 2. 실 네트워크 인터페이스 

그림 2와 같이 네트워크를 구성하고 Ubuntu에서 네트워크 구성을 진행하도록 하겠습니다.  각 인터페이스를 설정하기 위해 아래와 같은 명령어를 Ubuntu상에서 작성합니다. 

 
root@openstack-controller:~# vi /etc/network/interfaces

vi 편집기를 통해 네트워크 설정 파일인 /etc/network/interfaces를 수정해줍니다. 위에서 보시는 바와 같이 현재 네트워크 카드는 USB 네트워크 카드와, 내장 네트워크 카드 총 2개이기 때문에 2개의 인터페이스에 대한 네트워크 설정 정보를 입력해 주어야 합니다. 

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#내부 네트워크 인터페이스
auto eno1
iface eno1 inet manual

#USB 네트워크 인터페이스
auto enx88366cf9ff53
iface enx88366cf9ff53 inet static
address 192.168.0.101/24
gateway 192.168.0.1
dns-nameservers 8.8.8.8

먼저 네트워크 카드는 eno1과 enx88366cf9ff53 두 개로 나뉩니다. eno1은 manual 네트워크로 구성해주는데 해당 네트워크 인터페이스는 별도의 아이피 주소를 할당하지 않고 가상 머신들이 보내는 데이터를 그대로 외부로 전달해주기 만하는 일종의 빈 통로 정도로 생각하시면 될 것 같습니다. 

 

구체적인 네트워크 설정 구문 하나하나 설명하기에는 굉장히 글이 길어질 것 같아서 "우분투 네트워크 설정" 이라는 키워드로 검색하시고 의미를 해석하시길 추천드립니다. 다음은 USB 네트워크 카드 설정으로 enx~로 시작하는 것이 USB 네트워크 인터페이스의 이름입니다. 해당 네트워크 인터페이스에는 IP 주소를 수동으로 할당하고, 추후 관리자나 사용자가 오픈스택을 설치하고 사용하기 위한 IP 주소로 사용됩니다. 이렇게 되면 기본적인 네트워크 설정은 끝이 나게 됩니다. 

 

 

재부팅 후 ifconfig 명령어를 입력하여 IP주소가 할당 되어있는지 꼭꼭 확인하시길 바랍니다. 

 

 

 

Devstack 실행

이제 본격적으로 Devstack을 설치해보도록하겠습니다. Devstack은 local.conf라고 불리는 파일에 설치하고자 하는 프로젝트들의 Git 주소, 설정값 및 데이터베이스, 관리자 비밀번호 등을 작성하고 stack.sh라는 파일을 실행하여 자동적으로 Git으로부터 프로젝트를 다운로드하고 설치하게 됩니다. 

 

root@openstack-controller:~# sed -i 's/kr.archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
root@openstack-controller:~# sed -i 's/security.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list

먼저 위의 명령어를 입력하여 패키지 다운로드 서버를 일괄적으로 Daumkakao로 변경합니다. 이는 기본적인 우분투의 패키지 저장소에서 받는 것은 속도가 느릴 수 있기 때문에 변경해주도록 합니다.  간단하게 명령을 말씀드리자면, sed 명령은 문자열을 치환하게 되는데 "s/찾을문자열/변경할문자열/' 파일명"의 순으로 기본 ubuntu 저장소의 주소를 카카오의 저장소를 바꾸는데 이는 패키지 저장소 정보를 가지고 있는 /etc/apt/sources.list에서 명령을 수행하게 됩니다. 따라서 위의 명령을 수행하여 기존에 비해 빠른 패키지 다운로드를 실시할 수 있도록 합니다. 

 

이제 하단의 명령과 같이  apt-get udpate 명령어를 통해 /etc/apt/sources.list의 정보로부터 패키지 리스트를 업데이트하게 됩니다.

root@openstack-controller:~# apt-get update && apt-get dist-upgrade -y

또한 apt-get dist-upgrade 명령어를 통해 패키지를 모두 새버전으로 업데이트합니다.  해당 명령은 아래와 같이 한 번에 수행이 가능합니다. 참고로 기본적인 upgrade와 달리 dist-upgrade는 의존성 검사를 수행합니다.

 

Devstack을 통해 이루어지는 모든 작업은 아래 명령과 같이 기본적으로 stack이라는 유저를 생성하고, 해당 유저에게 권한을 부여함으로써 자동적으로 여러 프로젝트들을 설치할 수 있도록 합니다.

root@openstack-controller:~# useradd -s /bin/bash -d /opt/stack -m stack
root@openstack-controller:~# echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
root@openstack-controller:~# sudo su - stack

첫 번째의 useradd 명령어는 유저를 생성하는 명령어로 각 옵션은 -s 쉘을 지정하고, -d 홈 디렉터리 경로 지정, -m 옵션으로 디렉터리를 생성하게 됩니다. 다음 명령은 우분투 계정에 sudo 권한을 주는 명령으로써, 해당 사용자명(stack) 및 모든 명령어에 대해 패스워드가 필요없이 사용 가능하도록 하겠다는 뜻(ALL=(ALL) NOPASSWD: ALL)입니다.  그 다음 stack으로 로그인하게 됩니다. 

 

이제 git 명령어를 이용해 Devstack을 다운로드하고 local.conf를 작성한 뒤 실질적으로 devstack을 설치해보도록 하겠습니다. 먼저 아래 명령과 같이 git clone을 이용하여 devstack을 다운로드합니다. 이때는 stack 유저입니다. 

stack@openstack-controller:~$ git clone https://git.openstack.org/openstack-dev/devstack
stack@openstack-controller:~$ cd devstack

devstack을 받게 되면 devstack 폴더로 이동해줍니다. 그다음 vi local.conf 명령어를 수행하여 아래와 같이 local.conf를 작성합니다.  그 전에 해당 local.conf에 포함되어있는 프로젝트는 다음과 같습니다. 

 

  • Glance (Image Service)
  • Heat (Orchestration Service)
  • Horizon (Dashboard Service)
  • Placement (Placement Service)
  • Keystone (Identity Service)
  • Mistral (Workflow Service)
  • Mistral-dashboard
  • Networking-sfc (SFC option)
  • Neutron (Networking)
  • Nova (Compute Service)
  • Octavia (Load Balancer)
  • Octavia-dashboard
  • Tacker (NFV Service)
  • Tacker-horizon
  • Vitrage (RCA Service)
  • Vitrage-dashboard
  • Rally (Testing ServicE)

만약 상단의 프로젝트 리스트중 몇 개의 프로젝트들에 대해서는 포스팅되어 있는 자료가 있기 때문에 혹 궁금하시다면 참고하셔도 좋을 듯합니다. [1][2][3][4]

 

다시 vi local.conf로 돌아와서 local.conf 파일을 생성하고 아래의 내용을 입력하시면 됩니다.  내용이 상당히 길기 때문에 복사 하신 뒤 필요에 따라 변경하시는 것을 추천드립니다.

[[local|localrc]]
# USB LAN CARD IP ADDRESS
HOST_IP=192.168.0.101
# MANUAL INTERFACE NAME
FLAT_INTERFACE=eno1

FLOATING_RANGE=192.168.11.224/27
FIXED_RANGE=10.10.10.0/20
FIXED_NETWORK_SIZE=256

#PASSWORD CONFIGURATION
ADMIN_PASSWORD=root
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

#COMPUTE NODE
MULTI_HOST=True

#LOG CONFIGURATION
LOGFILE=/opt/stack/devstack.log
LOGDAYS=2
LOG_COLOR=True

# Nova
ENABLED_SERVICES+=,n-api,n-crt,n-cpu,n-cond,n-sch,n-api-meta,n-sproxy
ENABLED_SERVICES+=,placement-api,placement-client

# Glance
ENABLED_SERVICES+=,g-api,g-reg

# Neutron
ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron
ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api

# Tempest
ENABLED_SERVICES+=,tempest
ENABLED_SERVICES+=,barbican

#Octavia
enable_plugin octavia https://opendev.org/openstack/octavia 
enable_plugin octavia-dashboard https://opendev.org/openstack/octavia-dashboard.git 

#heat
enable_service h-eng h-api h-api-cfn h-api-cw
enable_plugin heat https://git.openstack.org/openstack/heat 

#Mistral
enable_plugin mistral https://github.com/openstack/mistral.git 

#Tacker
enable_plugin tacker https://github.com/openstack/tacker.git 
enable_plugin networking-sfc https://git.openstack.org/openstack/networking-sfc 

#Rally
enable_plugin rally https://git.openstack.org/openstack/rally-openstack

#Vitrage
enable_plugin vitrage https://git.openstack.org/openstack/vitrage 
enable_plugin vitrage-dashboard https://git.openstack.org/openstack/vitrage-dashboard 

#barbican
enable_plugin barbican https://opendev.org/openstack/barbican 

[[post-config|$NOVA_CONF]]
[DEFAULT]
notification_topics = notifications,vitrage_notifications
notification_driver=messagingv2

[[post-config|$NEUTRON_CONF]]
[DEFAULT]
notification_topics = notifications,vitrage_notifications
notification_driver=messagingv2

[[post-config|$CINDER_CONF]]
[DEFAULT]
notification_topics = notifications,vitrage_notifications
notification_driver=messagingv2

[[post-config|$HEAT_CONF]]
[DEFAULT]
notification_topics = notifications,vitrage_notifications
notification_driver=messagingv2

disable_service swift

 

먼저 HOST_IP는 앞서 작성했던 USB 랜카드 드라이버에 할당한 IP주소를 적어주시면 됩니다. 저의 경우 192.168.0.101가 됩니다.  다음 FLAT_INTERFACE는 내부 랜카드 드라이버 즉 manual 인터페이스로 설정하신 인터페이스의 이름을 작성하시면 됩니다. 그 외 FLOATING_RANGE, FIXED_RANGE, FIXED_NETWORK_SIZE는 그대로 두시거나 지우셔도 무방합니다. 

 

ADMIN_PASSWORD는 원하시는 패스워드를 설정하시면 되는데, 해당 패스워드는 WEB UI에 로그인 시 사용 됩니다. 나머지 DATABASE_PASSWORD, RABBIT_PASSWORD, SERVICE_PASSWORD는  원하시는 패스워드로 사용하시거나 그대로 두시면 모두 동일한 비밀번호로 설정 됩니다. 실무가 아니라면 그냥 두시는 걸 추천드립니다.

MULTI_HOST는 멀티 노드 즉 컴퓨트 노드의 사용 여부를 뜻합니다. 따라서 컨트롤 노드, 컴퓨트 노드 여러 개의 물리적인 노드로 구성하실 경우 True로 작성해주시면 됩니다. 사실 꼭 컴퓨트 노드가 없더라도 컨트롤 노드 또한 기본적으로 컴퓨트의 기능을 가지고 있지만, 추후 컴퓨트 노드를 추가 가능하기 때문에 True로 하시길 추천 드립니다. 나머지 LOGFILE, LOGDAYS, LOG_COLOR은 이름에서도 알 수 있는 것처럼 LOG 관련 설정을 의미합니다.

 

나머지 구문 즉 enable_plugin [git 주소]는 어떤 프로젝트를 포함시킬지를 나타냅니다. 혹시 원하는 프로젝트가 있으시다면, "openstack [프로젝트명] devstack install"이라는 키워드로 검색하시면, local.conf에 어떤 내용을 작성해야 할지 확인하실 수 있습니다. 

 

특정 버전을 받고 싶으시다면, "enable_plugin [프로젝트명] [프로젝트 git주소] stable/[version]"

단. 모든 프로젝트 버전은 통일하시는 것을 추천드립니다. Devstack의 버전 포함

 

 

local.conf를 작성하셨다면 local.conf를 저장하신 뒤 devstack 폴더 내에서 ./stack.sh를 치시면 됩니다.

 

그림 3. devstack 실행결과  

 

그림 3과 같이 나온다면 성공적으로 devstack을 설치한 것입니다. 이제 reboot 명령어를 통해 reboot을 수행해주시면 됩니다. 성공적으로 devstack을 마쳤다면,  인터넷 창에서 http://[컨트롤 노드 아이피 주소]/dashboard를 치시면 그림 4와 같이 오픈스택의 웹 UI를 확인하실 수 있습니다.

 

그림 4. 오픈스택 웹 UI

 

설치 후 설정

성공적으로 devstack을 설치하셨다면, 이제 나머지 설정을 진행해야 합니다. 먼저 앞서 manual 인터페이스는 가상 머신이 통신하기 위한 일종의 통로라고 설명드렸습니다. 해당 인터페이스를 오픈스택 내부 가상 네트워크인 OVS(Open vSwitch)와 쉽게 말해 연결시켜주어야 합니다. 그다음은 보안을 위한 포트 등을 설정하고, 끝으로 기타 제가 생각하는 필요한 옵션 2가지를 간단히 말씀드리겠습니다. 

 

먼저 stack 유저에서 ovs 명령을 이용하여 다음과 같은 명령을 작성하도록 합니다. 사실 해당 명령어는 브릿지라고 불리는 내부 네트워크에 실제 물리 인터페이스를 포트 연결해주는 명령어입니다.

참고
$ wget https://files.pythonhosted.org/packages/55/db/97c1ca37edab586a1ae03d6892b6633d8eaa23b23ac40c7e5bbc55423c78/futures-3.0.5.tar.gz#sha256=0542525145d5afc984c88f914a0c85c77527f65946617edb5274f72406f981df
$ tar xfvz futures-3.0.5.tar.gz
$ cd futures-3.0.5/
$ sed -i 's/raise type(self._exception), self._exception, self._traceback/raise Exeption(type(self._exception), self._exception, self._traceback)/' concurrent/futures/_base.py
$ sudo python3 setup.py install

 

출처:https://velog.io/@dojun527/Devstack%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-Openstack-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 
목록 보기

 

2/8

우선 VirtualBox를 설치합니다. 설치는 여기에 들어가서 각자의 환경에 맞게 설치를 하면 됩니다.

설치가 완료되면 Oracle VirtualBox를 실행시키고 Virtual Machine을 새로 만들기 위해 새로 만들기를 클릭합니다.


그러면 아래와 같은 창이 뜹니다. 여기서 새 가상 머신의 이름과 폴더를 정하고 종류를 선택합니다. 지금은 오픈스택을 사용할 것이므로 종류는 Linux를 선택하고 버전은 ubuntu-64bit를 설정한다.

그리고 가상 머신의 이름,가상 머신 메모리크기, 하드 디스크 파일 정리 그리고 하드 디스크 크기 설정에 대한 창이 순서대로 뜹니다.

우선, 가상 머신의 이름에 대해서는 각자 정하시면 됩니다.
가상 머신 메모리 크기에 대해서는 4192MB로 설정했습니다. 정해진 크기는 아니지만, 최소 4GB 정도로 설정합니다.

하드 디스크는 '지금 새 가상 하드 디스크 만들기'를 선택하였고, 이는 가상 머신에서 사용할 가상 하드 디스크를 생성하는 것입니다.

하드 디스크의 파일 종류에서는 방금 생성한 가상 하드 디스크는 파일의 형태로 존재하기 때문에 파일의 타입을 정해야 합니다.
저는 VDI를 선택했습니다. VDI는 Virtual box에서 가장 많이 사용하는 image종류입니다.

그리고 실제 파일을 기록하는 방식으로 동적 할당과 고정 크기를 선택해야 합니다. 동적 할당은 게스트의 스토리지로 사용할 "이미지 파일"을 처음에 모두 할당하는 것이 아니라 실제 사용될 때 할당하겠다는 의미입니다. => 공간 효율적
고정 크기는 생성한 디스크의 크기 모두를 온전히 할당하는 방법입니다
저는 굳이 사용하지 않는 영역을 미리 할당받을 필요가 없기 때문에 동적 할당을 선택하였습니다.

그리고 가상 하드 디스크의 크기는 최소 50GB이상으로 설정하는 것이 좋습니다. 동적 할당으로 했다면 메모리를 크게 설정해도 큰 상관은 없습니다.저는 50GB로 설정했습니다.

그리고 만들기 버튼을 누르면 여러분들이 설정한 이름으로 가상 머신이 생성된 것을 보실 수 있습니다.


그리고 프로세서와 네트워크를 설정해줍니다.

프로세서를 설정할 때는 우선 가상 머신을 종료하고 설정->시스템->프로세서 개수에서 프로세서를 설정합니다.

네트워크는 설정->네트워크에서 아래와 같이 설정합니다.

어댑터1에는 NAT, 어댑터2에는 호스트 전용 어댑터을 선택합니다.
그리고 무작위 모드는 모두 허용으로 설정합니다.

이 상태까지는 저희가 컴퓨터는 샀지만 운영체제는 설치 하지 않은 상태입니다. 만약 시작 버튼을 누르게 되면 아래와 같은 메세지가 뜹니다.

이는 Virtual Box가 운영체제가 아직 설치되지 않았다는 것을 감지하고, 설치에 필요한 디스크를 선택하라는 창이 뜨게 됩니다. 이때, 리눅스 이미지가 필요합니다.

리눅스의 운영체제는 실제로는 하나밖에 없습니다. 바로 Linux Kernel 입니다. 하지만 리눅스를 사용하기 위해서는 여러 주변 장치들이 필요합니다. 예로 들어 유틸리티, shell, 라이브러리, GUI등 입니다.
Kernel에 이러한 주변 장치들을 묶어서 사람들에게 배포하는 것이 Linux distribution입니다.
Linux distribution으로는 ubuntu, centOS, redhat등이 있습니다.

다시 본론으로 돌아와서 리눅스 이미지를 설치하겠습니다. 설치는 여기에서

(ubunut 16 버전을 설치하면 후에 python 버전을 업그레이드 해야합니다. 업그레이드를 해줘도 설치하는데 오류가 발생할 수 있기 때문에 ubuntu 18 버전 설치하는 것을 권장드립니다. 설치는 여기)

사이트에 들어가게 되면 desktop image와 server install image가 있습니다. 둘의 가장 큰 차이점은 GUI유무의 차이입니다.

오픈 스택을 이용하기 위해서는 server가 더 좋기때문에 server로 설치하겠습니다.

다운받은 Ubuntu ISO 파일을 가상 드라이브에 삽입을 합니다.

삽입을 완료하면 Ubuntu 설치 화면으로 넘어가게 됩니다. 설치 언어(English)를 선택하고, Install Ubuntu Server(United States)를 선택합니다. 그리고 저는 detect keyboard layout은 굳이 할 필요가 없어서 no를 선택했습니다.
keyboard layout은 한글을 사용할 것이 아니기 때문에 English를 선택합니다. 그리고 맨위에 있는 English(US)를 선택합니다.

넘어가면 Host name을 입력하는 란이 나옵니다. Host name은 컴퓨터 네트워크에서 자신의 컴퓨터 이름을 정하는 것입니다.(컴퓨터 이름)
그리고 사용자의 이름을 입력해야하는데 너무 길지 않고, 중간에 특수문자는 안들어 가는 것을 권장합니다.

다음으로는 사용자 계정 ID를 설정합니다. 실제로 로그인할 때 사용하는 이름입니다. 기본적으로 사용자 이름과 같게 사용하는 것을 권장합니다.
그리고 password를 설정합니다.
home directory를 encrypt할지에 대해서 선택을 해줍니다.(저는 no)

(설치 중)

time zone을 정하고 초기에 만든 가상 디스크를 파티션 하는 방법을 선택합니다.
저는 자동으로 partition해주는 Guided-use entire disk을 선택했습니다.
그러면 초기에 설정한 디스크의 크기가 적혀져있고 넘어가면, root partition과 swap partition이 자동으로 생성된것을 볼 수 있습니다. (익숙하신 분들은 manual로 만들어도 무방합니다.) 그리고 yes를 선택합니다.

http proxy information에서는 continue를 하고, upgrade에 대해서 어떻게 할지 선택합니다.(저는 No automatic updates 선택)

그리고 software package를 추가로 필요에 따라 선택해서 설치합니다.(저는 openSSH server를 추가로 선택)

그리고 yes

continue를 선택하면 드디어 설치 완료!!

아이디와 비밀번호를 적으면 아래와 같이 로그인이 된 것을 알 수 있습니다.


이제 오픈스택 을 설치하는 과정을 살펴보겠습니다.

가상 머신을 실행합니다.
처음 가상 머신을 실행을 하면 update,upgrade(or dist-upgrade)를 해줍니다.
update는 사용 가능한 패키지들과 그 버전들의 리스트를 업데이트하기 위한 명령어이고, upgrade는 나의 우분투에 있는 패키지들을 실제로 최신 버전으로 업그레이드하기 위한 명령어입니다.
-y는 yes를 의미합니다.

sudo apt update
sudo apt upgrade -y
sudo apt-get update
sudo apt-get upgrade -y


새로운 User 생성

이제 새로운 User를 생성합니다.
devstack을 이용하여 설치하는데, root유저가 아니라 stack 유저를 생성하여 사용합니다.

sudo useradd -s /bin/bash -d /opt/stack -m stack

stack 유저로 시스템의 많은 부분을 변화시킬 예정이므로 sudo 권한이 있어야 합니다.

echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

하고 나면 결과화면으로 아래와 같이 확인할 수 있습니다.

그런 다음 root유저에서 stack 유저로 변경합니다.

sudo su - stack


DevStack 설치 및 환경 설정

저는 stein 시리즈를 사용할 것이므로 아래와 같이 명령어를 적습니다. (stein버전)

sudo apt install git -y

git clone https://github.com/openstack-dev/devstack.git -b stable/stein

설치가 완료되면 devstack 폴더로 이동합니다.
devstack을 설치하기 전에 ip address를 확인해야 합니다.

ip addr

또는

hostname -I

를 이용하여 ip 주소를 알아낼 수 있습니다.

다음으로 devstack 폴더안에 local.conf 파일을 만드는데 vi를 편리하게 사용하기 위해 vim을 먼저 설치하는 것을 추천드립니다.

cd devstack

sudo apt-get install vim

local.conf의 내용은 아래와 같습니다.

[[local|localrc]]
HOST_IP= # HOST_IP=x.x.x.x
ADMIN_PASSWORD=0000
RABBIT_PASSWORD=0000
SERVICE_PASSWORD=0000
DATABASE_PASSWORD=0000

##Enable senlin
#enable_plugin senlin https://git.openstack.org/openstack/senlin stable/stein
##Enable senlin-dashboard
#enable_plugin senlin-dashboard https://git.openstack.org/openstack/senlin-dashboard stable/stein

##enable_plugin heat https://opendev.org/openstack/heat stable/stein
##enable_plugin heat-dashboard https://opendev.org/openstack/heat-dashboard.git stable/stein
#enable_service h-eng h-api h-api-cfn h-api-cw heat-dashboard

devstack의 소유 유저를 stack으로 바꿔줍니다. 이때 하위 폴더 소유자를 재귀적으로 모두 변경하기 위해 -R 옵션을 추가합니다.

sudo chown -R stack ./devstack

devstack 상위 폴더에서 devstack에 대한 접근 허용 범위를 아래와 같이 변경합니다.

sudo chmod -R 777 devstack

devstack폴더안으로 들어가서 openstack을 설치를 합니다.
stack.sh => 패키지를 설치하는 스크립트입니다.

cd devstack

./stack.sh

네트워크 속도에 따라서 2시간 정도 시간이 걸립니다.
설치할 파일들이 많기 때문에 오류는 당연히 많이 발생하겠죠,,?
(어떤 오류가 뜰까,, 두근두근)



오류를 모두 해결하고 나면 아래와 같은 화면이 뜬다

(기숙사 와이파이가 느려서 그런지 거의 3시간은 걸린거 같네요,,ㅠㅠㅠㅠ)

설치가 완료되면 http://<HOST_IP>/dashboard와 같이 주소창에 검색하면 다음과 같은 화면을 확인 할 수 있습니다.

그리고 사용자 이름에 admin 또는 demo를 입력하고 암호는 local.conf 파일에 입력한 ADMIN_PASSWORD를 입력합니다.

그러면 아래와 같이 dashboard를 확인할 수 있습니다.

 

출처: https://www.digitalocean.com/community/tutorials/install-openstack-ubuntu-devstack

 

How to Install OpenStack on Ubuntu 18.04 with DevStack | DigitalOcean

 

www.digitalocean.com

 

 

How to Install OpenStack on Ubuntu 18.04 with DevStack | DigitalOcean

 

www.digitalocean.com

How to Install OpenStack on Ubuntu 18.04 with DevStack

Published on August 4, 2022
By Pankaj
Developer and author at DigitalOcean.

 

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Openstack is a free and opensource IaaS cloud platform that handles cloud compute, storage and network resources. It comes with an intuitive dashboard that enables systems administrators to provide and monitor these resources. You can seamlessly install OpenStack locally on your Ubuntu 18.04 instance for learning and testing purposes using Devstack. Devstack is a set of extensible scripts that facilitate OpenStack deployment. In this guide, you will learn how to deploy OpenStack on Ubuntu 18.04 with devstack.

Minimum Requirements

Before we begin, ensure you have the following minimum prerequisites

  1. A fresh Ubuntu 18.04 installation
  2. User with sudo privileges
  3. 4 GB RAM
  4. 2 vCPUs
  5. Hard disk capacity of 10 GB
  6. Internet connection

With the minimum requirements satisfied, we can now proceed.

Step 1: Update and Upgrade the System

To start off, log into your Ubuntu 18.04 system using SSH protocol and update & upgrade system repositories using the following command.

apt update -y && apt upgrade -y

Sample Output

Next reboot the system using the command.

sudo reboot

OR

init 6

Step 2: Create Stack user and assign sudo priviledge

Best practice demands that devstack should be run as a regular user with sudo privileges. With that in mind, we are going to add a new user called “stack” and assign sudo privileges. To create stack user execute

sudo adduser -s /bin/bash -d /opt/stack -m stack

Next, run the command below to assign sudo privileges to the user

echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack

Sample Output

Step 3: Install git and download DevStack

Once you have successfully created the user ‘stack’ and assigned sudo privileges, switch to the user using the command.

su - stack

In most Ubuntu 18.04 systems, git comes already installed. If by any chance git is missing, install it by running the following command.

sudo apt install git -y

Sample output

Using git, clone devstack’s git repository as shown.

git clone https://git.openstack.org/openstack-dev/devstack

Sample output

Step 4: Create devstack configuration file

In this step, navigate to the devstack directory.

cd devstack

Then create a local.conf configuration file.

vim local.conf

Paste the following content

[[local|localrc]]

# Password for KeyStone, Database, RabbitMQ and Service
ADMIN_PASSWORD=StrongAdminSecret
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD

# Host IP - get your Server/VM IP address from ip addr command
HOST_IP=10.208.0.10

Save and exit the text editor. NOTE:

  1. The ADMIN_PASSWORD is the password that you will use to log in to the OpenStack login page. The default username is admin.
  2. The HOST_IP is your system’s IP address that is obtained by running ifconfig or ip addr commands.

Step 5: Install OpenStack with Devstack

To commence the installation of OpenStack on Ubuntu 18.04, run the script below contained in devstack directory.

./stack.sh

The following features will be installed:

  • Horizon – OpenStack Dashboard
  • Nova – Compute Service
  • Glance – Image Service
  • Neutron – Network Service
  • Keystone – Identity Service
  • Cinder – Block Storage Service
  • Placement – Placement API

The deployment takes about 10 to 15 minutes depending on the speed of your system and internet connection. In our case, it took roughly 12 minutes. At the very end, you should see output similar to what we have below.

This confirms that all went well and that we can proceed to access OpenStack via a web browser.

Step 6: Accessing OpenStack on a web browser

To access OpenStack via a web browser browse your Ubuntu’s IP address as shown. https://server-ip/dashboard This directs you to a login page as shown.

Enter the credentials and hit “Sign In” You should be able to see the Management console dashboard as shown below.

For more on Devstack’s customization, check out their system configuration guide. Additionally, check out the Openstack documentation for administration guide.

error: "/opt/stack/logs/error.log: No such file or directory"

 

error: "/opt/stack/logs/error.log: No such file or directory" - devstack deploy in Ubuntu 12.04 LTS

during the devstack deployment in Ubuntu 12.04 LTS, I run the stack.sh script and the error jumps out: [Call Trace] ./stack.sh:191:die [ERROR] ./stack.sh:191 If you wish to run this script a...

stackoverflow.com

$ FORCE=yes ./stack.sh

./stack.sh: line 546: echo: write error: Broken pipe

 

 

(1) Main Components of OpenStack

Service Code Name Description
Identity Service Keystone User Management
Compute Service Nova Virtual Machine Management
Image Service Glance Manages Virtual image like kernel image or disk image
Dashboard Horizon Provides GUI console via Web browser
Object Storage Swift Provides Cloud Storage feature
Block Storage Cinder Storage Management for Virtual Machine
Network Service Neutron Virtual Networking Management
Load Balancing Service Octavia Provides Load Balancing feature
Orchestration Service Heat Provides Orchestration feature for Virtual Machine
Metering Service Ceilometer Provides the feature of Usage measurement for accounting
Database Service Trove Database resource Management
Container Service Magnum Container Infrastructure Management
Data Processing Service Sahara Provides Data Processing feature
Bare Metal Provisioning Ironic Provides Bare Metal Provisioning feature
Shared File System Manila Provides File Sharing Service
DNS Service Designate Provides DNS Server Service
Key Manager Service Barbican Provides Key Management Service
728x90