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_url
은 clouds-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