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 글로벌 옵션과 일치합니다.

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 항목이 있으면 다음 옵션과 동일합니다:

--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

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

openstack --os-cloud infra server list

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

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

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

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에 있는 모든 항목이 포함됩니다.

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

4.3 디버깅[ | ]

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

5 로깅 세팅[ | ]

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

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 인터랙티브 모드에서 선호하는 인코딩 값을 출력합니다:

$ 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로 설정하십시오.

$ PYTHONIOENCODING=utf-8

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

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

$ openstack project list --os-cloud devstack-admin
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}