OpenStack

OpenStack Client 사용해보기

frontheadlock 2026. 4. 27. 16:19
반응형

 

 

OpenStack을 사용하는 방법에는 여러가지가 있습니다.

 

OpenStack의 DevStack을 이용해 직접 구축한 후 이를 사용해보거나,

openstack client를 이용해 구축된 환경에 cli 형태로 접근할 수도 있습니다.

 

다만 openstack client는 단독으로 모든 것을 구성해주는 도구는 아니기에,

OpenStack 환경이 사전에 준비되어 있어야 합니다.

 

저의 경우 이미 사용 가능한 OpenStack 환경을 제공받았기 때문에,

이번에는 python-openstackclient를 직접 내려받아 CLI 동작을 확인해보겠습니다.

 

1. Source Code Clone

 

우선 작업을 진행할 디렉토리에 소스코드를 clone 받습니다.

git clone https://opendev.org/openstack/python-openstackclient

 

필요한 코드를 직접 받아두면,
실행 흐름을 따라가거나 디버깅할 때도 조금 더 수월하게 볼 수 있습니다.

 

2. clouds.yaml 파일 생성

 

OpenStackClient는 인증 정보를 clouds.yaml 파일로 관리할 수 있습니다.

 

clouds:
  my-cloud:
    auth:
      # Keystone 인증 엔드포인트 주소
      auth_url: 접속할 원격 서버 url
      username: '접속 유저명'
      password: '비밀번호'
      # 접속 테넌트명
      project_name: '프로젝트명'
      user_domain_name: 'Default'
      project_domain_name: 'Default'
    region_name: 'RegionOne'
    interface: 'public'
    identity_api_version: '3'


clouds.yaml은 현재 clone 받은 루트 디렉토리에 생성하겠습니다.

위와 같이 clouds.yaml을 생성해두면,
이후 명령어에서 my-cloud라는 이름으로 해당 OpenStack 환경에 접근할 수 있습니다.

 

3. PyCharm을 이용한 venv 생성

 

PyCharm을 이용해 python-openstackclient와 tox 등을 실행할 virtualenv를 생성해줍니다

 

 

OpenStack의 경우 python3.10 버전과 특히 잘맞아 3.10버전으로 가상환경을 세팅하였습니다.

 

4. 의존 라이브러리 설치

 

python-openstackclient를 실행하기 위해 의존 라이브러리를 virtualenv에 설치합니다.

 

# 실행용 기본 의존성 설치
python3 -m pip install -r requirements.txt

# 테스트용 기본 의존성 설치
python3 -m pip install -r test-requirements.txt

 

 

5. python-openstackclient를 develop 모드로 설치하기

 

이제 virtualenv에 python-openstackclient 자체를 설치합니다.

 

일반적으로 파이썬 코드를 받아 설치할 때는 `python setup.py install`을 이용하지만,

개발을 위해서는 아래 명령어로 develop 모드로 설치해아 합니다.

 

python3 setup.py develop

 

 

 

6. openstack server list 실행해보기

 

python-openstackclient의 진입점은 openstackclient/shell.py에 있습니다.

 

이 파일을 그냥 실행시키면 OpenStack CLI가 구동되므로,
우리는 server list와 같은 인자를 함께 넘겨줘야 합니다.

 

 

server list 값을 넣어주기 위해서는 shell.py 실행 이후,
PyCharm에서 제공하는 Edit Configurations를 이용해 스크립트 인자를 넣어줄 수 있습니다.

 

 

스크립트 인자를 넣는 곳에 아래와 같이 입력합니다.

 

# 서버 목록 조회
# clous.yaml에 정의한 my-cloud 설정 사용
server list --os-cloud my-cloud

 

여기서 --os-cloud my-cloud는 clouds.yaml에 설정한 OpenStack 환경 이름을 의미합니다.

 

간혹 Working Directory의 경로가 openstackclient 폴더까지 잡히는 경우가 있는데,
이럴 때는 프로젝트 루트인 python-openstackclient까지 경로가 잡히도록 수정합니다.

 

이후 shell.py를 실행하면 아래와 같이 터미널에 서버 목록이 출력됩니다.

 

 

이렇게 확인한 결과는 터미널에서

openstack server list 직접 실행했을 때와 동일한 의미를 가집니다.


PyCharm에서 소스 기준으로 실행해도,

결국 우리가 사용하는 OpenStack CLI 동작을 그대로 확인할 수 있다는 뜻입니다.

 

출력되는 주요 항목은 아래와 같이 이해하면 됩니다.

  • ID
    • UUID 형태로 구성된 서버의 고유 식별자입니다.
    • OpenStack 내부에서 인스턴스를 구분할 때 사용됩니다.
  • Name
    • 서버 생성 시 지정한 인스턴스 이름입니다.
  • Status
    • 서버의 현재 상태를 나타냅니다.
    • 예를 들어 ACTIVE, SHUTOFF, ERROR 같은 값으로 확인할 수 있습니다.
  • Networks
    • 서버가 연결된 네트워크와 할당된 IP 정보를 보여줍니다.
  • Image
    • 서버를 생성할 때 기반이 된 이미지 정보입니다.
    • 환경에 따라 Ubuntu를 쓰기도 하고, 가벼운 cirros 이미지를 사용하기도 합니다.
  • Flavor
    • 서버의 스펙을 결정하는 값입니다.
    • CPU, 메모리, 디스크와 같은 자원 크기를 정의하며, n1.nano는 1 vCPU, 512mb RAM 입니다.

 

7. tox 실행해보기

 

여기까지 실행이 잘 되었다면,
마지막으로 tox를 실행해 현재 소스 기준에서 테스트가 정상적으로 수행되는지도 확인해볼 수 있습니다.

 

tox는 OpenStack 프로젝트에서 자주 사용하는 테스트 실행 도구이므로,
코드를 읽거나 수정해보기에 유용합니다.

 

# tox 설치
python3 -m pip install tox

# tox 실행
tox

 

 

 

이 과정을 마치면 설치만 해보는 수준을 넘어,
python-openstackclient 소스 코드를 직접 실행하고,
원격 OpenStack 환경에 인증해 실제 CLI 명령이 어떻게 동작하는지 확인할 수 있습니다.

 

즉, 이미 구성된 OpenStack 환경이 있다면,

openstackclient는 OpenStack의 동작을 가볍게 확인해보고,

소스 수준에서 흐름을 따라가기에 꽤 좋은 출발점이 됩니다.

반응형