#!/usr/bin/env python3 """ Vultr API 기본 사용 예제 """ import os import sys # vultr_api 패키지 경로 추가 (개발용) sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from vultr_api import VultrClient from vultr_api.client import VultrAPIError def main(): # API 키 설정 (환경 변수에서 가져오기) api_key = os.environ.get("VULTR_API_KEY") if not api_key: print("VULTR_API_KEY 환경 변수를 설정해주세요") print("export VULTR_API_KEY='your-api-key'") sys.exit(1) # 클라이언트 생성 client = VultrClient(api_key=api_key) try: # 1. 계정 정보 조회 print("=" * 50) print("계정 정보") print("=" * 50) account = client.account.get() print(f"이메일: {account.get('email')}") print(f"이름: {account.get('name')}") print(f"잔액: ${account.get('balance')}") print(f"보류 요금: ${account.get('pending_charges')}") print() # 2. ACL 정보 조회 print("=" * 50) print("ACL (IP 접근 제어)") print("=" * 50) acl = client.account.get_acl() print(f"ACL 활성화: {acl.get('acl_enabled', False)}") acls = acl.get("acls", []) if acls: print("허용된 IP:") for ip in acls: print(f" - {ip}") else: print("허용된 IP: 없음 (모든 IP 허용)") print() # 3. 인스턴스 목록 print("=" * 50) print("인스턴스 목록") print("=" * 50) instances_resp = client.instances.list() instances = instances_resp.get("instances", []) if instances: for inst in instances: status = inst.get("status", "unknown") power = inst.get("power_status", "unknown") print(f"- {inst.get('label', 'No Label')}") print(f" ID: {inst.get('id')}") print(f" IP: {inst.get('main_ip')}") print(f" 리전: {inst.get('region')}") print(f" 상태: {status} ({power})") print(f" 플랜: {inst.get('plan')}") print() else: print("인스턴스가 없습니다") print() # 4. 리전 목록 (일부만) print("=" * 50) print("사용 가능한 리전 (일부)") print("=" * 50) regions_resp = client.regions.list(per_page=10) regions = regions_resp.get("regions", []) for region in regions[:5]: print(f"- {region.get('id')}: {region.get('city')}, {region.get('country')}") print() # 5. 플랜 목록 (일부만) print("=" * 50) print("사용 가능한 플랜 (일부)") print("=" * 50) plans_resp = client.plans.list(per_page=10) plans = plans_resp.get("plans", []) for plan in plans[:5]: print(f"- {plan.get('id')}") print(f" CPU: {plan.get('vcpu_count')}vCPU, RAM: {plan.get('ram')}MB") print(f" 가격: ${plan.get('monthly_cost')}/월") print() except VultrAPIError as e: print(f"API 오류 발생: {e.message}") if e.status_code: print(f"상태 코드: {e.status_code}") sys.exit(1) if __name__ == "__main__": main()