OpenStackClient 설정

1 개요[ | ]

Configuration
설정

OpenStackClient는 주로 명령줄 옵션과 환경변수를 사용하여 설정됩니다. 이러한 설정 대부분은 여러 클라우드 설정을 간편하게 관리하기 위해 설정 파일에도 넣을 수 있습니다.

글로벌 옵션, 환경변수, 설정 파일에서 사용되는 키워드 간에는 간단히 상호변환할 수 있는 관계가 있습니다.

대부분의 글로벌 옵션은 해당 값을 설정하는 데 사용할 수 있는 대응하는 환경변수를 가지고 있습니다. 둘 다 존재하는 경우 명령줄 옵션이 우선합니다. 환경변수 이름은 옵션 이름에서 선행 대시(–)를 제거하고, 각 포함된 대시(-)를 밑줄(_)로 변환하며, 대문자로 변환하여 생성됩니다.

설정 파일의 키워드 이름은 글로벌 옵션 이름에서 --os- 접두어를 제외하고 생성됩니다.

2 글로벌 옵션[ | ]

openstack 매뉴얼 페이지에는 OpenStackClient와 기본 인증 플러그인이 인식하는 모든 글로벌 옵션이 나열되어 있습니다.

3 환경 변수[ | ]

openstack 매뉴얼 페이지에는 OpenStackClient와 기본 인증 플러그인이 인식하는 모든 환경변수도 나열되어 있습니다.

4 설정 파일[ | ]

4.1 clouds.yaml[ | ]

clouds.yaml은 하나 이상의 클라우드에 연결하는 데 필요한 모든 정보를 포함하는 설정 파일입니다. 개인 정보를 포함할 수 있으므로 일반적으로 사용자에게 프라이빗으로 간주됩니다.

OpenStackClient는 다음 위치에서 clouds.yaml 파일을 찾습니다:

  • 현재 디렉토리
  • ~/.config/openstack
  • /etc/openstack

첫 번째로 발견된 파일이 사용됩니다.

키는 --os- 접두어 없는 'openstack 글로벌 옵션과 일치합니다.

yaml
Copy
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: demo
      username: demo
      password: 0penstack
    region_name: RegionOne
  ds-admin:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: admin
      username: admin
      password: 0penstack
    region_name: RegionOne
  infra:
    cloud: rackspace
    auth:
      project_id: 275610
      username: openstack
      password: xyzpdq!lazydog
    region_name: DFW,ORD,IAD
    interface: internal

위 예제에서 rackspace 클라우드의 auth_urlclouds-public.yaml(아래 참조)에서 가져옵니다.

처음 두 항목은 동일한 DevStack 클라우드의 기본 사용자 두 명에 대한 것입니다.

세 번째 항목은 Rackspace Cloud Servers 계정에 대한 것입니다. clouds-public.yaml(아래)에 rackspace 항목이 있으면 다음 옵션과 동일합니다:

Bash
Copy
--os-auth-url https://identity.api.rackspacecloud.com/v2.0/
--os-project-id 275610
--os-username openstack
--os-password xyzpdq!lazydog
--os-region-name DFW
--os-interface internal

그리고 명령줄에서 다음과 같이 선택할 수 있습니다:

Bash
Copy
openstack --os-cloud infra server list

rackspace 엔트리에는 여러 리전이 나열되어 있습니다. 동일한 설정이 각 리전에 대해 생성됩니다. 명령줄에서 -os-region-name이 지정되지 않은 경우 목록의 첫 번째 리전이 기본값으로 사용됩니다.

interface(위에서 본 rackspace 엔트리) 선택은 옵션입니다. 이 설정이 작동하려면, 이 클라우드 인스턴스의 모든 서비스가 이 유형의 인터페이스를 지원하도록 이미 설정되어 있어야 합니다.

Identity v3를 사용하는 경우 다음 예제와 같이 사용자와 프로젝트 도메인 이름을 지정해야 합니다:

yaml
Copy
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: demo
      username: demo
      password: 0penstack
      user_domain_name: Default
      project_domain_name: Default
    region_name: RegionOne

4.2 clouds-public.yaml[ | ]

clouds-public.yaml은 여러 사용자가 공통으로 사용하는 클라우드에 대한 공개 정보를 포함하는 설정 파일입니다. clouds-public.yaml은 사용자 간에 쉽게 공유되어 퍼블릭 클라우드 설정을 간소화할 수 있습니다.

clouds.yaml과 유사하게 OpenStackClient는 다음 위치에서 clouds-public.yaml을 찾습니다:

  • 현재 디렉토리
  • ~/.config/openstack
  • /etc/openstack

첫 번째로 발견된 파일이 사용됩니다.

여기서 키는 clouds.yaml cloud 키에서 참조됩니다. clouds.yaml에 있는 모든 항목이 포함됩니다.

yaml
Copy
public-clouds:
  rackspace:
    auth:
      auth_url: 'https://identity.api.rackspacecloud.com/v2.0/'

4.3 디버깅[ | ]

설정 문제를 디버그하는 데 도움이 되도록 configuration show 명령어를 사용할 수 있습니다. 현재 설정을 표시합니다.

5 로깅 세팅[ | ]

설정 파일 clouds.yaml에서 log_level 또는 log_file을 설정하여 추가 로그를 활성화할 수 있습니다:

yaml
Copy
clouds:
  devstack:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: demo
      username: demo
      password: 0penstack
    region_name: RegionOne
    operation_log:
      logging: TRUE
      file: /tmp/openstackclient_demo.log
      level: info
  ds-admin:
    auth:
      auth_url: http://192.168.122.10:5000/
      project_name: admin
      username: admin
      password: 0penstack
    region_name: RegionOne
    log_file: /tmp/openstackclient_admin.log
    log_level: debug

log_file: </path/file-name>

로그 파일의 전체 경로

log_level: error | info | debug

로그 레벨이 설정되지 않으면, warning이 사용됩니다.

로그 레벨이 info이면, 다음 정보가 기록됩니다:

  • 클라우드 이름
  • 사용자 이름
  • 프로젝트 이름
  • CLI 시작 시간 (로깅 시작 시간)
  • CLI 종료 시간
  • CLI 인수
  • CLI 반환 값
  • 그외 모든 info 메시지

로그 레벨이 debug이면, 다음 정보가 기록됩니다:

  • 클라우드 이름
  • 사용자 이름
  • 프로젝트 이름
  • CLI 시작 시간 (로깅 시작 시간)
  • CLI 종료 시간
  • CLI 인수
  • CLI 반환 값
  • API 요청 헤더/본문
  • API 응답 헤더/본문
  • 그외 모든 debug 메시지

명령어가 실행될 때마다 이러한 로그가 저장됩니다. 사용자 작업을 기록하면 리소스 변경사항을 식별하고 트러블슈팅에 유용한 정보를 제공할 수 있습니다.

단일 명령어의 출력을 저장하려면 –log-file 옵션을 사용하십시오.

  • --log-file <LOG_FILE>

--log-file의 로그 레벨은 다음 옵션을 사용하여 설정할 수 있습니다:

  • -v, --verbose
  • -q, --quiet
  • --debug

6 로케일 및 언어 지원[ | ]

OpenStackClient 3.0.0부터 언어에 대한 전체 지원이 포함되어 있습니다. 올바른 구성을 보장하기 위한 몇 가지 팁이 있습니다.

6.1 선호하는 파이썬 인코딩 확인[ | ]

로케일 설정이 올바른지 진단하려면 다음을 수행하십시오. Python 인터랙티브 모드에서 선호하는 인코딩 값을 출력합니다:

Console
Copy
$ python -c "import locale; print locale.getpreferredencoding()"

값이 ascii 또는 ANSI_X3.4-1968 또는 ASCII의 다른 이름인 경우 환경에 문제가 있습니다. 아마도 LANG 환경변수가 올바르게 설정되지 않았을 것입니다.

6.2 LANG 환경변수 확인[ | ]

LANG은 lang_code`_`[region_code].`encoding` 형식이어야 합니다. 예를 들어, en_US.UTF-8와 같은 것입니다.

여기서 중요한 부분은 UTF-8 인코딩 값입니다. Python은 로케일 정보를 찾아 환경에서 찾은 인코딩 값을 stdin, stdout, stderr의 인코딩 속성으로 설정합니다. 환경에서 정의되지 않은 경우 기본값은 ASCII입니다.

6.3 출력 리다이렉팅[ | ]

위의 내용은 stdin, stdout stderr가 TTY에 연결된 경우에만 발생합니다. 데이터를 리디렉트하는 경우 이러한 스트림의 인코딩은 기본 인코딩으로 설정되며 이는 Python 배포판의 site.py에 설정된 기본값인 ASCII입니다. 이를 해결하려면 PYTHONIOENCODING을 UTF8로 설정하십시오.

Console
Copy
$ PYTHONIOENCODING=utf-8

6.4 DevStack에 대한 마지막 참고사항[ | ]

일반적인 DevStack 작업 후 openrc 파일을 소싱하여 환경변수를 세팅합니다. 이렇게 하면 터미널에서 기본 LANG 환경변수가 해제되어 선호하는 Python 인코딩이 ascii가 됩니다. 이러한 환경변수를 독립적으로 세팅하거나 devstack 또는 devstack-admin os-cloud 프로필을 사용하는 것이 좋습니다.

Console
Copy
$ openstack project list --os-cloud devstack-admin