OpenStackClient 개발 환경

김유경·2025년 5월 17일

📌 OpenStack CLI 클라이언트(python-openstackclient)를 로컬에서 직접 개발하고 디버깅하기 위한 VSCode 환경 구축 방법을 정리합니다.

1. OpenStackClient 프로젝트 클론

git clone https://github.com/openstack/python-openstackclient.git
cd python-openstackclient

2. 클라우드 인증 설정 (clouds.yaml)

  • clouds.yaml은 OpenStack CLI 및 SDK에서 인증 정보를 YAML 형태로 관리할 수 있도록 도와주는 파일입니다.
  • 이를 사용하면 매번 환경 변수를 지정하지 않고 --os-cloud 옵션만으로 쉽게 인증이 가능합니다.

📄 공식 문서: OpenStack CLI configuration

  • python-openstackclient 최상위 폴더clouds.yaml 파일 생성
clouds:
  devstack:
    auth:
      auth_url: http://<ip>/identity
      project_name: admin
      domain_name: Default
      username: admin
      password: password
    region_name: RegionOne

3. VSCode launch.json 생성 및 설정

VSCode에서 OpenStackClient CLI 명령어를 직접 디버깅 모드로 실행하기 위해 launch.json을 설정합니다.

⚙️ 설정 방법

3-1. VSCode → 좌측 Run and Debug → Create a launch.json file
3-2. Python 선택 후 아래처럼 설정

{
    "version": "0.2.0",
    "configurations": [
   
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "args": [
            "--os-cloud", "devstack", "image", "list"
            ],
            "console": "integratedTerminal",
            "env": {
                "OS_PROJECT_NAME": "admin",
                "OS_TENANT_NAME": "admin",
                "OS_USERNAME": "admin",
                "OS_PASSWORD": "password",  // 비밀번호 변경 및 주석 삭제
                "OS_REGION_NAME": "RegionOne",
                "OS_IDENTITY_API_VERSION": "3",
                "OS_AUTH_TYPE": "password",
                "OS_AUTH_URL": "http://<ip>/identity",  // <ip> 변경 및 주석 삭제
                "OS_VOLUME_API_VERSION": "3",
                "OS_USER_DOMAIN_ID": "default",
                "OS_PROJECT_DOMAIN_ID": "default",
                "CINDER_VERSION": "3"
            }
        }
      ]
   }

💡 args에는 실행하려는 CLI 명령어와 옵션을 공백 기준으로 나누어 각각 배열의 요소로 입력해야 합니다.

  • 예시
"args": [
  "--os-cloud", "devstack", "image", "list"
]
  • 실제 실행 시
python -m openstackclient.shell --os-cloud devstack image list

4. Python 가상환경 생성

4-1. 프로젝트 루트에서 가상환경 생성

```
python -m venv venv
```

4-2. VSCode → Ctrl + Shift + P → Python: Select Interpreter → 생성한 venv 폴더 내 python 선택

💡 수동으로 실행 

# Mac/Linux
source venv/bin/activate

# Windows
venv\Scripts\activate

5. 개발 환경에 패키지 설치 (develop 모드)

OpenStackClient를 개발 모드로 설치합니다.

pip install -r requirements.txt
python setup.py develop

  • python setup.py develop 명령어 실행이 완료되면, 프로젝트 루트에 python_openstackclient.egg-info 폴더가 생성됩니다.
  • 이 폴더 안의 entry_points.txt 파일에는 openstack server list 명령어 등 CLI 커맨드가 실제로 연결된 클래스의 경로가 기록됩니다.

🖇️ 참고

기능python setup.py installpython setup.py develop
egg-info 위치시스템에 설치된 site-packages 디렉터리에 생성개발 중인 소스 디렉터리 내에 egg-info 생성
egg-info 내용패키지의 메타데이터가 포함된 .egg-info 생성수정된 소스와 연결된 egg-info로 실시간 반영
소스 코드 수정 반영수정 후 다시 설치 필요소스 코드 수정 후 바로 반영
패키지 연결시스템에 설치된 패키지로 연결됨패키지의 소스 코드가 계속 참조되므로, 실시간으로 수정 사항 반영

6. 디버깅

6-1. VSCode에서 openstackclient/shell.py 선택
6-2. 상단 Run > Start Debugging (F5) 클릭
6-3. 아래처럼 OpenStack CLI 명령어(openstack image list)와 동일한 결과 확인 가능

⚡ 모든 인증 정보는 clouds.yaml 또는 launch.json의 args에서 --os-cloud devstack으로 처리합니다

0개의 댓글