대시보드가 아닌 명령어를 이용한 인스턴스 생성 및 삭제


서비스들을 관리할 때 대시보드를 사용하는 것이 더 편리하지만

자동화 시키거나 자동화 프로그램을 만들어서 관리할 때에는 명령어로 관리하는 것이 더 쉽다


오픈스택의 명령어는 다음 사이트에서 확인할 수 있다

https://docs.openstack.org/python-openstackclient/pike/cli/command-list.html


기본 설정값으로 명령어로 접근하기 위해서는 다음과 같은 명령어와 옵션을 매번 입력해야 한다

openstack service list [--os-auth-url [url]  --os-username [사용자]]


매 명령어 입력마다 긴 옵션을 적기 귀찮기 때문에(귀찮으면 개발합시다) 스크립트를 적용하여 더 편한 환경으로 설정하고 실습을 진행해보자






1. 먼저 대시보드에 admin 계정으로 접속하여 좌측 상단 계정명을 눌러서 OpenStack RC File v3을 다운받아서

오픈스택이 설치된 우분투 가상머신 안으로 파일을 옮겨준다

(본인은 Berryz WebShare라는 웹 파일서버를 이용해서 옮겼다)




2. 다음 명령어로 옮긴 스크립트 파일을 적용시켜준다

source [스크립트 파일명] : 스크립트 파일 적용




3. 다음 명령어로 설치된 서비스를 확인할 수 있고 긴 옵션이 필요없다는 것도 확인 가능하다

openstack service list : 설치된 서비스 목록




4. 대시보드를 이용하여 인스턴스를 생성할 때 설정해줬던 몇 가지가 있는데 그 중 필수로 설정해줘야 하는 4가지 항목이 있다

다음 4가지 항목만 일일이 설정하고 나머지는 기본 설정값으로 생성해보자(설정하려면 명령어가 길어지기 때문에)

image(이미지)

Flavor(사양)

security group(보안그룹)

network(네트워크)


위의 4가지 항목을 필수로 설정해줘야 인스턴스를 생성할 수 있는데 설정할 값(ID)들을 하나하나 직접 확인해서 명령어 입력 시 입력해야한다





5. 다음 명령어로 사용 가능한 image의 ID를 확인한다

openstack image list : 이미지 목록




6. 다음 명령어로 flavor의 ID를 확인한다

(여러 가지 사양들 중 원하는 사양 선택)

openstack flavor list : flavor 목록




7. 다음 명령어로 admin-openrc.sh 스크립트 파일에서 프로젝트 ID를 확인한다

cat admin-openrc.sh | grep OS_PROJECT_ID


(본인의 프로젝트 ID는 65e5bbf5aed34fd5993e83829eeb063d)


다음 명령어로 보안 그룹 목록을 확인하고 확인해둔 프로젝트 ID와 동일한 보안 그룹을 확인하고

프로젝트 ID와 동일한 보안 그룹이 여러 개 존재한다면 사용자가 원하는 보안 그룹 ID를 확인한다

openstack security group list : 보안 그룹 목록


(본인은 프로젝트 ID가 일치하는 보안 그룹이 단 하나다)




8. 다음 명령어로 필수 항목만 설정하고 인스턴스를 생성한다

openstack server create --flavor [id]  --image [id]  --security-group [id]  --network [id] [생성할 인스턴스 이름]




9. 인스턴스가 생성되었다




10. 다음 명령어로 생성된 인스턴스를 확인할 수 있다

openstack server list : 인스턴스 목록


demo123 인스턴스는 ACTIVE 상태로 제대로 생성되었지만 demo11과 demo22는 ERROR 상태로 생성되었다

원인은 인스턴스 생성 명령어 오타일 확률이 높다

특히 보안 그룹 ID에 오타가 있으면 인스턴스는 생성되지만 ERROR 상태가 된다

다른 곳에서 오타가 있으면 인스턴스가 생성조차 되지 않기 때문에 인스턴스가 ERROR 상태로 생성되었다면 보안 그룹을 살펴보자




11. 대시보드에 접속해보면 인스턴스가 생성된 것을 확인할 수 있다




12. 인스턴스 목록을 확인하고 다음 명령어로 해당 인스턴스를 삭제할 수 있다

openstack server delete [인스턴스 이름]


객체 스토리지 생성 및 파일 업로드




1. 사용자 Windows 7로 대시보드에 접속한다




2. 객체 스토리지 이외에는 설치한 서비스가 없기 때문에 접근이 되지 않는다




3. 우측 오브젝트 스토리지 탭 - 컨테이너 -> 컨테이너를 눌러 새로운 컨테이너를 만들어준다

(컨테이너는 일종의 독립된 프로세스로 컨테이너 덕분에 객체 스토리지가 독립적으로 동작이 가능하다)




4. 컨테이너 이름을 지정하고 컨테이너 접근은 공용으로 설정해준다




5. 새로운 컨테이너를 확인할 수 있다

생성한 컨테이너 이름은 누른다




6. 우측 파일 업로드 버튼을 누른다




7. 업로드할 파일을 지정하고 업로드한다




8. 해당 파일이 업로드된 것을 확인할 수 있다



9. 다른 PC에서 해당 가상머신의 대시보드로 접속하여 로그인한다




10. 우측 오프젝트 컨테이너 탭 - 컨테이너를 보면 생성해둔 컨테이너 이름을 누른다




11. 업로드해놓은 파일을 확인할 수 있으며 우측에서 다운로드, 수정, 복사, 삭제 등이 가능하다



객체 스토리지를 위한 오픈스택 설치


    오픈스택이 완벽한 프로그램이 아니라서 여러 부분에서 에러가 발생하고 동작하지 않는데 객체 스토리지를 사용할 때 제대로 동작하지 않는 부분이 있다


devstack으로 오픈스택을 설치 시 local.conf 파일을 수정하지 않은 기본 설정값에는 객체 스토리지(Swift)가 포함되어 있지 않다

그래서 객체 스토리지를 설치하는 방법으로는 다음 2가지 방법이 있다

1. 이미 설치된 오픈스택에서 객체 스토리지만 추가 설치

2. local.conf 파일을 수정하여 객체 스토리지를 추가해서 오픈스택 설치


하지만 위 2가지 방법 모두 어느 한 부분이 제대로 설치되지 않는 에러가 발생한다


그래서 본인이 진행할 마지막 방법은 local.conf 파일을 수정해서 모든 서비스를 비활성화하고 객체 스토리지만 추가해서 오픈스택을 설치하는 방법


준비 환경 : VMware, UbuntuOS.iso, GNS3으로 구축한 네트워크 환경



GNS3으로 다음과 같은 네트워크를 준비해주자 









1. 새로운 가상머신을 만들어서 우분투를 설치하고 devstack을 다운받는다

가상머신 사양

CPU 1개

Memory 2GB

Disk 20GB

(이전 게시글에 정리한 오픈스택 설치하는 것과 동일하다)

https://bettersoonergooner.tistory.com/28?category=684135




2. stackrc 파일을 살펴보자

56 - 60 : 설치할 서비스들의 목록으로 local.conf 파일에서 설정 가능하고 예를 들어서 Swift를 활성화시켜주기 위해 다음 61 - 62을 수행하시오

65 - 80 : 기본 설정값으로 설치되는 서비스들의 목록이다




3. stackrc 파일을 따라서 local.conf 파일을 수정한다

단지 다른 모든 서비스는 비활성화 시킨다




4. stack.sh로 오픈스택을 설치하고 객체 스토리지의 가상머신 IP주소로 접속하면 대시보드로 접속이 가능한 것을 확인할 수 있다



오픈스택 블록 스토리지(Cinder) 생성


오픈스택 사용자가 블록 스토리지인 Cinder를 생성해서 연결해보자




1. 사용자 Windows 7 대시보드 - 우측 볼륨 탭 - 볼륨 -> 볼륨 생성을 누른다




2. 다음과 같이 설정해준다

볼륨이름 : lvmdriver-2

볼륨소스 : 빈 볼륨

유형 : lvmdriver-1

크기 : 2

가용구역 : nova

그룹 : 그룹없음




3. 생성된 볼륨을 인스턴스와 연결시켜준다

우측 Compute 탭 - 인스턴스 -> 해당 인스턴스 - 볼륨 연결을 누른다




4. 볼륨 ID를 설정해준다




5. PuTTY로 SSH 접속하여 관리자 계정으로 로그인한다

(PuTTY에 관한 것은 Floating IP 설정할 때 이미 정리한 내용이다)




6. 다음 명령어를 통해 /dev/vdb 장치가 있다는 것을 확인해준다

fdisk -l : 장치 목록 출력




7. 해당 장치 관리 메뉴에 진입해서 포맷을 시켜준다

(장치 관리 메뉴는 대화 방식이다)

fdisk [장치명] : 해당 장치 관리 메뉴


장치 관리 메뉴

Command (m for help) : m    명령어 옵션을 확인

Command (m for help) : n    새로운 파티션을 생성

나머지는 기본 설정값으로 진행

Command (m for help) : w    설정 내용을 저장하고 관리 메뉴를 종료




8. 다시 장치 목록을 확인해보면 장치가 제대로 할당되었다는 것을 확인할 수 있다

fdisk -l




9. 다음 명령어로 새로 만든 장치에 파일 시스템을 만들어준다

mkfs [장치명] : 해당 장치 파일 시스템 생성




10. 해당 장치와 마운트 시킬 디렉토리를 준비하고 다음 명령어로 마운트 시켜준다

mount [디렉토리 경로] : 해당 디렉토리와 장치 마운트




11. 다음 명령어로 만든 장치의 상태를 확인할 수 있다

df -h : 디스크 공간 및 상태 출력




네트워크 생성

오픈스택 설치 후 네트워크가 자동으로 생성되어 있는 것이 정상적이지만 빈번하게 네트워크가 생성되지 않아서

인스턴스 생성 시 네트워크가 없어서 생성할 수 없을 경우에 네트워크를 직접 설정하는 방법이다



1. 사용자 windows7 - Dashboard - 우측 네트워크 탭 - 네트워크

정상적으로 설치되었다면 private라는 이름의 네트워크가 생성되어 있어야 하지만 없다면 네트워크 생성을 누른다




2. 네트워크 이름을 private로 지정하고 나머지는 기본값으로 넘어간다




3. 다음과 같이 서브넷 설정을 해준다

서브넷 이름 : private-subnet

네트워크 주소 원본 : 풀에서 네트워크 주소 할당

주소 풀 : v4

네트워크 마스크 : 26(Pool 기본)

IP 버전 : IPv4

게이트웨이 : 10.0.0.1




4. 네트워크 세부 정보 탭에서 다음과 같이 설정해준다

DHCP 사용 체크

Pools 할당 : 10.0.0.2, 10.0.0.62




5. 네트워크 탭 - 라우터

router1의 이름의 라우터를 만들어주기 위해 라우터 생성을 누른다




6. 다음과 같은 설정으로 라우터를 생성해준다

라우터 이름 : router1

관리 상태 활성화 체크

외부 네트워크 : public

가용 구역 힌트 : nova




7. 생성된 라우터의 이름을 누른다




8. 다음과 같이 해당 IP로 인터페이스를 추가해주기 위해 인터페이스 추가를 누른다




9. 다음과 같이 설정하고 인터페이스를 추가해주면 된다

서브넷 : IP 주소 선택

IP 주소(게이트웨이) : 서브넷 +1


SSH를 통한 인스턴스 접속

이전 게시글과 같은 방법으로 새로운 보안 그룹을 생성하여 설정하는 실습이다

단지 ICMP가 아닌 SSH로 설정해준다는 점이 다를 뿐이다


1. 사용자 windows7에서 좌측 네트워크 탭 - 보안 그룹 -> 보안 그룹 생성




2. 보안 그룹 이름을 지정하고 보안 그룹을 생성한다




3. 다음과 같이 SSH 규칙을 설정한다

규칙 : SSH

원격 : CIDR

CIDR : 0.0.0.0/0




4. 좌측 Compute 탭 - 인스턴스 -> 우측 화살표 - 보안 그룹 편집

새로 만든 보안 그룹을 추가해준다




5. 사용자 windows7에서 PuTTY로 인스턴스에 SSH 접근을 시도한다

IP주소는 할당받은 Floating IP를 입력한다

SSH의 포트 번호는 22이다




6. SSH 접속이 성공한 것을 확인할 수 있고 네트워크 장치에 네트워크 설정이 되어있는 것 또한 확인할 수 있다




7. 오픈스택의 우분투에서도 br-ex 인터페이스가 네트워크 설정되어 추가된 것을 확인할 수 있다




8. 우분투의 라우팅 테이블 역시 추가되어 있다




9. 사용자 window7에서 Compute 탭 - 인스턴스 - 콘솔

인터페이스를 확인한 결과, SSH 접속해서 확인한 것과 동일하다




인스턴스 보안 그룹 설정

기본적으로 모든 포트가 닫혀있어서 접속할 포트를 설정해줘야하는데 여기서 ICMP 프로토콜 통신을 위한 설정을 실습해보자

 


1. 사용자 windows7에서 오픈스택 좌측 네트워크 탭 - 보안 그룹 -> 보안 그룹 생성




2. 보안 그룹 이름을 지정해주고 보안 그룹을 생성해준다




3. 보안 그룹이 생성된 것을 확인할 수 있고 우측의 규칙 관리 버튼을 누른다




4. 규칙 추가 버튼을 누른다




5. 규칙 추가에서 다음과 같이 설정해준다

규칙 : ICMP

Direction : 들어옴

원격 : CIDR

CIDR : 0.0.0.0/0




6. Compute 탭- 인스턴스 -> 우측 화살표 - 보안 그룹 편집을 누른다




7. 만든 보안 그룹을 +로 추가한다




8. 보안 그룹이 추가된 것을 확인할 수 있다



Floating IP

클라우드 내에서 가상머신이 인터넷 외부망과 통신하기 위해 배정받는 IP


1. 사용자 windows7에서 오픈스택 웹 - 좌측 네트워크 탭 - Floating IP -> 프로젝트에 IP 할당




2. Pool : public으로 지정 후 IP 할당




3. IP가 할당된 것을 확인할 수 있고 우측의 연결 버튼을 누른다




4. IP 주소를 확인하고 인스턴스를 지정해준다




5. 실습환경이 GNS3으로 구축한 네트워크 환경이기 때문에 GNS3에서 정적 라우팅과 재분배를 통해 라우팅 테이블에 등록시킨다






오픈스택 인스턴스 생성

실습 과정을 진행하기 전에 몇 가지 실습환경을 확인하고 진행해보자


다음과 같은 네트워크 환경에서 진행되며

우분투의 오픈스택이 서비스를 제공해주고 Window7이 사용자라고 가정하고 실습 진행











1. 사용자 Windows7에서 웹 브라우저 크롬으로 주소창에 http://[Ubuntu IP 주소]/dashboard에 접속하고 admin 계정으로 먼저 로그인한다

사용자 이름 : admin

암호 : nomoresecret

크롬 브라우저가 사용할 때 가볍다




2. admin 계정은 로그아웃하고 사용자 계정인 demo 계정으로 로그인한다

사용자 이름 : demo

암호 : nomoresecret




3. demo 계정으로 로그인




4. 좌측 Compute 탭 - 인스턴스 -> 인스턴스 시작




5. 세부정보 탭

인스턴스 이름을 지정하고 다음으로 넘어간다




6. 소스 탭

인스턴스 삭제 시 볼륨 삭제 : 예

사용가능에 있는 디스크를 우측의 화살표 버튼으로 위로 할당시켜준다




7. 사용가능한 사양들 중 자신에 알맞은 사양을 할당하고 다음으로 진행한다




8. 키 페어 탭

키 페어 생성을 누른다




9. 키 페어 이름을 지정하고 키 페어를 생성해준다




10. 개인 키가 생성된 것을 확인할 수 있으며 클립 보드에 개인 키 복사 버튼을 누르고

메모장에 따로 저장해둔다




11. 나머지 설정은 기본값으로 진행하고 인스턴스 시작을 누르면 demo1이라는 인스턴스가 생성된 것을 확인할 수 있다


오픈스택 설치


오픈스택을 위한 Ubuntu 설치 후 devstack를 이용해서 오픈스택을 설치하는 법을 알아보자


오픈스택 설치 후에 간단한 실습을 하기위한 작은 네트워크를 GNS3 환경에서 미리 구축하고

구축한 네트워크 안에 있는 상태로 오픈스택 설치하는 법을 알아보자


준비물 : Ubuntu, GNS3로 구축한 네트워크 환경


GNS3으로 네트워크를 구축하기 전 우분투의 네트워크 먼저 설정해주자


1. 우분투 네트워크 설정 파일을 vi 편집기로 열고 설정한 관리자 비밀번호를 입력한 후 명령을 실행한다

sudo /etc/network/interfaces




2. /etc/network/interfaces 파일을 vi 편집기로 실행한 화면




3. 기존 파일 밑부분에 네트워크 설정값을 추가해준다

auto [장치명]

iface [장치명] inet [네트워크 방식]

address [IP 주소]

netmask [서브넷마스크]

gateway [GW 주소]

dns-servers [DNS 주소]




4. 네트워크 설정이 완료되었으면 네트워크 서비스를 재시작하고 해당 장치 인터페이스네 네트워크 설정이 잘 되었는지 확인한다

IP 주소와 서브넷마스크가 설정한대로 적용된 것을 확인할 수 있다

service networking restart : 네트워크 서비스 재시작

ifconfig : 네트워크 장치 정보 출력




우분투의 네트워크 설정이 완료되었으면 GNS3로 다음과 같이 네트워크 환경을 구축해준다








devstack을 이용한 오픈스택 설치하는 법

devstack을 설치하기 전에 위의 과정을 전부 거친 후 외부와 통신이 가능한 상태로 다음 과정을 수행해야한다


1. /etc/profile 파을을 vi 편집기로 실행한다

(/etc/profile은 사용자가 로그인 시 적용되는 스크립트를 정의해놓은 파일)

sudo vi /etc/profile




2. /etc/profile의 기본 설정 파일이다




3. 파일 아래 부분에 다음과 같은 설정값(환경변수)을 추가해준다

PATH=$PATH:/sbin

export PATH




4. 다음 명령어로 root 사용자 패스워드를 설정해준다

sudo passwd root

설정할 비밀번호 입력




5. root 사용자로 로그인 후 stack 사용자를 생성해준다

su - root : root 사용자로 로그인

useradd -U -G sudo -s /bin/bash -m stack

echo "stacl ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

passwd stack



6. 다음 명령어로 devstack를 다운받는다

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




7. 다운받은 devstack 디렉토리를 살펴보면 다음 파일들이 중요하다

stackrc : 서비스 설정파일

local.conf : 설치할 때 기본 설정 파일




8. /home/stack/devstack/samples/local.conf 파일을 /home/stack/devstack 디렉토리 안으로 복사하고

다음 명령어로 설치된 패키지의 버전을 모두 최신으로 업그레이드해준다

sudo apt-get upgrade





9. 다음 명령어로 devstack으로 오픈스택을 설치해준다

/home/stack/devstack/stack.sh  또는  ./stack.sh


오픈스택이 설치되는 과정에서 에러가 자주 발생해서 일부가 제대로 설치되지 않을 수도 있다

나중에 미설치 부분을 파악해서 일일이 재설치 해줄 수도 있지만

이 과정 직전에 스냅샷을 찍어놓고 에러가 발생했을 시 다시 복원 후 다시 설치를 진행하는 것이 편하고 더 빠르다


설치 소요시간 : 약 3시간 - 제 기준





10. 오픈스택 설치 완료 후 다음 명령어로 파이썬 패키지를 다운받는다

sudo apt-get install python-pip




11. 다음 명령어로 pip을 업그레이드해준다

sudo pip install --upgrade pip


+ Recent posts