카탈로그 자산 마이그레이션 ( IBM Knowledge Catalog )
명령을 cpd-cli 사용하여 단일 Cloud Pak for Data 클러스터 내에서 또는 서로 다른 클러스터 간에 카탈로그 자산을 내보내고 가져올 수 있습니다.
전제조건
카탈로그를 마이그레이션하기 전에 거버넌스 아티팩트를 반드시 마이그레이션해야 용어 할당, 데이터 클래스 할당 및 자산-아티팩트 간의 관계가 정상적으로 유지됩니다. 이를 준수하지 않을 경우, 시스템 간 ID가 일치하지 않아 시스템이 정상적으로 작동하지 않거나 오류가 발생할 수 있습니다.
- 필수 역할
- 이 태스크를 완료하려면 다음 역할 중 하나가 있어야 합니다.
- 클러스터 관리자
- 인스턴스 관리자
- 제한사항
- 데이터 품질 규칙과 연결된 데이터 품질 정보는 내보내거나 가져올 수 없습니다.
- 카탈로그 설정은 내보내거나 가져올 수 없습니다.
시작하기 전에
내보내기 및 가져오기 유틸리티를 사용하기 전에 다음 작업을 완료하십시오:
사용자 작업용 컴퓨터에
cpd-cli프로필을 생성했는지 확인하십시오. 자세한 내용은 관리cpd-cli명령어를 사용하기 위한 프로필 만들기를 참조하십시오.인스턴스의 operands 프로젝트에 필요한 PVC(Persistent
oc get pvc export-import-pvc --namespace=${PROJECT_CPD_INST_OPERANDS}Volume Claim)가 있는지 확인하십시오. 해당 PVC가 없는 경우, ‘ Cloud Pak for Data ’ 내보내기 및 가져오기 유틸리티 사용 준비’를 참조하십시오.사용자 컴퓨터에서 내보내기/가져오기 유틸리티를 초기화하십시오. 자세한 내용은 ‘내보내기/가져오기 유틸리티 초기화’를 참조하십시오.
다음 명령을 실행하여 보조
catalog-api-aux모듈을 사용할 수 있는지 확인하십시오:cpd-cli export-import list aux-modules \ --namespace=${PROJECT_CPD_INST_OPERANDS} \ --profile=${CPD_PROFILE_NAME} \ --arch=${CPU_ARCH}
지원되는 자산 유형
다음과 같은 카탈로그 자산을 내보내고 가져올 수 있습니다:
connectiondata_asset- BI 보고서
- 논리적 데이터 모델(LDM)
- 물리적 데이터 모델(PDM)
- 사용자 정의 자산 유형
현재 데이터 소스 정의의 마이그레이션은 지원되지 않습니다. 자세한 내용은 ‘ IBM Knowledge Catalog 의 알려진 문제’를 참조하십시오.
내보내기 범위 선택
모든 카탈로그, 프로젝트 및 스페이스의 자산을 모두 내보내려면 ‘카탈로그 자산 내보내기’로 이동하세요.
내보낼 자산을 선택하려면 다음 단계를 따르세요:
YAML 파일의 이름을 지정하십시오:
export OVERRIDE_YAML_FILE=<fully-qualified-file-name>다음과 같은 구조로 파일을
export.yaml생성하십시오:catalog-api-aux: # exportspec specifies which assets to export exportspec: 'EXPORT_JSON_STRING'변수를
EXPORT_JSON_STRINGJSON 문자열로 대체하여 내보낼 자산을 지정하십시오. 특정 워크스페이스의 모든 자산을 내보내려면, 코드는 다음 예시와 비슷하게 작성하면 됩니다:catalog-api-aux: exportspec: '{"catalog": { "container_specs": [{ "guids": ["08f248d3-0c5f-4193-a16d-e3c0cc7f7d94"], "all_assets": true} ]} }'주의: JSON 문자열은 한 줄에 작성해야 하며, 작은 따옴표로 묶어야 합니다. 이해를 돕기 위해, 다음 예시에서는 JSON 문자열을 각 줄에 하나씩 나누어 표시했습니다.특정 자산을 내보내려면 다음 예제의 코드를 사용하세요:
지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 모든 자산을 내보내려면:
'{ "project": { <<---- this is the type of asset container: catalog, project, or space "container_specs": [ { "guids": [ "00cf5b102-17b3-4638-95df-309a2a443137", <<---- these are the ids of asset containers "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29" ], "all_assets": true } ] }, "catalog": { <<---- this is the type of asset container: catalog, project, or space "container_specs": [ { "guids": [ "ab3d18a4-015f-4bb1-ae13-4ee9faf0382a" <<---- these are the ids of asset containers ], "all_assets": true } ] } }'지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 특정 자산을 내보내려면:
'{ "space": { <<---- this is the type of asset container: catalog, project, or space "container_specs": [ { "guids": [ "4b014869-fc0e-4919-bc93-3fa8c40bcd37" <<---- this is the id of asset container ], "asset_specs": { "asset_ids": [ "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29", <<---- these are the ids of assets "e2395865-5503-49da-b708-cfbf2fb1b646" ] } } ] } }'지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 특정 유형의 자산을 내보내려면:
'{ "space": { <<---- this is the type of asset container: catalog, project, or space "container_specs": [ { "guids": [ "4b014869-fc0e-4919-bc93-3fa8c40bcd37", <<---- these are the ids of asset containers "866613f8-4102-4cd2-be6e-ee46ea6c468b" ], "asset_specs": { "asset_types": [ "data_asset", <<---- these are the types of assets "notebook" ] } } ] } }'지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 접두사 뒤에
resource_key와일드카드가 붙은 이름과 일치하는 에셋을 내보냅니다:'{ "space": { <<---- this is the type of asset container: catalog, project, or space "container_specs": [ { "guids": [ "4b014869-fc0e-4919-bc93-3fa8c40bcd37", <<---- these are the ids of asset containers "866613f8-4102-4cd2-be6e-ee46ea6c468b" ], "asset_specs": { "resource_keys": [ "inst_id1:/SCHEMA1/*", <<---- these are the resource_keys of assets "inst_id1:/SCHEMA2/*" ] } } ] } }'
카탈로그 자산 내보내기
IBM Knowledge Catalog 서비스에서 카탈로그 자산을 내보내려면 다음 작업을 수행하십시오:
내보내기 작업의 이름을 지정하십시오:
export EXPORT_NAME=<name>명령줄
cpd-cli인터페이스가 설치된 디렉터리로 이동한 다음, 사용 중인 환경에 맞는 export 명령을 실행하십시오:- 모든 카탈로그, 프로젝트 및 스페이스의 모든 자산을 내보내려면 다음 명령어를 사용하세요:
cpd-cli export-import export create ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --component catalog-api \ --profile=${CPD_PROFILE_NAME} - 내보낼 자산을 선택하려면, 다음 명령어의 ‘내보내기 범위 선택’ 단계에서 생성된 YAML 파일을 참조하십시오:
cpd-cli export-import export create ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --component catalog-api \ --values ${OVERRIDE_YAML_FILE} \ --profile=${CPD_PROFILE_NAME}
- 모든 카탈로그, 프로젝트 및 스페이스의 모든 자산을 내보내려면 다음 명령어를 사용하세요:
내보내기가 완료될 때까지 기다려 주세요. 다음 명령어를 사용하여 내보내기 상태를 확인할 수 있습니다:
cpd-cli export-import export status ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --profile=${CPD_PROFILE_NAME}내보내기 결과 다운로드:
cpd-cli export-import export download ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --profile=${CPD_PROFILE_NAME}내보낸 패키지의 이름은 다음과 같은 형식을 따릅니다:
cpd-exports-<export_name>-<timestamp>-data.tar환경 변수를 설정하여 내보낼 패키지 이름을 정의합니다:
export WKC_ASSET_EXPORT=<export_file_name>
가져오기 범위 선택
모든 카탈로그, 프로젝트 및 스페이스의 자산을 모두 가져오려면 ‘카탈로그 자산 가져오기’ 단계로 이동하세요.
가져올 자산을 직접 선택하려면, 가져오기 사양을 포함한 YAML 파일을 생성하고 다음 단계를 따르세요:
다음과 같은 구조로 파일을
import.yaml생성하십시오:catalog-api-aux: # importspec specifies which assets to import importspec: 'IMPORT_JSON_STRING'변수를
IMPORT_JSON_STRING가져올 자산을 지정하는 JSON 문자열로 대체하십시오. 지정한 사용자는admin_username가져온 자산의 소유자가 되며, 반드시 인스턴스 관리자로 설정해야 합니다.예:
catalog-api-aux: admin_username: cpadmin importspec: '{"catalog": { "container_specs": [{ "guids": ["08f248d3-0c5f-4193-a16d-e3c0cc7f7d94"], "all_assets": true} ]} }'YAML 파일에 다음 가져오기 설정을 추가하여 가져올 자산을 선택하거나 자산의 소유권을 변경할 수 있습니다:
containerIds: 특정 소스 카탈로그를 새 클러스터 내의 특정 기존 컨테이너로 가져옵니다. 이 값은 소스:대상 형식의 JSON 맵입니다.예:
'{ "containerIds": { "default": "<target-id1>", "<original-id>": "<target-id2>" } }'newContainerNameOverrides: 기존 컨테이너를 새 컨테이너로 가져옵니다. 컨테이너를 생성하기 전에 특정 이름을 지정할 수 있습니다. 그렇지 않으면 새 컨테이너에는 기본 이름이 지정됩니다. 이 값은 소스:대상 형식의 JSON 맵입니다.예:
'{ "newContainerNameOverrides": { "<source-id1>": "<target-name1>", "<source-id2>": "<target-name2>" } }'members: 카탈로그를 가져올 때 가져온 자산의 기본 멤버십을 설정합니다. 카탈로그는 원하는 자산 멤버십 설정을 반영하도록 자체 멤버십 설정을 통해 자동으로 업데이트됩니다. 기존 회원 정보는 삭제되고, 지정된 그룹이 회원으로 설정됩니다. 이 항목은 인스턴스 관리자로admin_username설정되어야 합니다.예:
catalog-api-aux: admin_username: test-user-dd importspec: '{ "containerIds": {"default": "7345d4bc-b377-41e1-98b2-1e79767f8d97"}, "members": { "default": [{"access_group_id": "10010", "roles": ["VIEWER"]}, {"access_group_id": "20010", "roles": ["EDITOR"]}, {"access_group_id": "30010", "roles": ["OWNER"]}]} }'duplicate_action: 자산 생성 시 수행할 작업을 지정합니다. 조치가 지정되지 않은 경우 기본적으로 "IGNORE"가 적용되며, 중복 항목은 새로운 자산으로 저장됩니다. 다음 값을 사용할 수 있습니다.- "업데이트" - 중복된 항목을 새로 반영된 변경 사항으로 업데이트합니다.
- "거부" - 중복 자산이 발견되면 가져오지 마십시오.
- "REPLACE" - 중복된 항목을 새 자산으로 덮어씁니다.
- "무시" - 중복 항목을 무시하고 새 에셋을 생성합니다.
주의:duplicate_action해당connection자산 유형, 동적 IP 주소를connection사용하는 자산 유형, 자산 리뷰, 평점 및 메모는 지원되지 않습니다.예:
importspec: '{ "duplicate_action": "REPLACE" }'다음 예시에서는 지정된 컨테이너의 중복 처리 방식이 "UPDATE"로 설정되어 있습니다. 기본적으로 다른 컨테이너들은 "IGNORE"(중복 허용) 처리 방식을 사용하고 있습니다.
importspec: '{ "containerIds": { "default": "${GUID}" }, "duplicate_actions": {"<source_container_id>": "UPDATE","default":"IGNORE"}}'default_user: 카탈로그를 가져올 때 가져온 자산의 기본 사용자를 설정합니다.default_group: 카탈로그를 가져올 때 가져온 자산의 기본 그룹을 설정합니다.fail_on_user_mismatch: 대상 시스템에 해당 사용자가 존재하지 않는 경우, 플래그가fail_on_user_mismatchfalse인 경우 가져오기 작업과 함께 제공된default_user값을 사용합니다. 기본값으로 true로fail_on_user_mismatch설정된 플래그를 사용하면 가져오기가 실패합니다.fail_on_group_mismatch: 대상 시스템에 해당 그룹이 존재하지 않는 경우, 플래그가fail_on_group_mismatchfalse인 경우 가져오기 작업과 함께 제공된default_group그룹을 사용합니다. 기본값으로 true로fail_on_group_mismatch설정된 플래그를 사용하면 가져오기가 실패합니다.예:
importspec: '{ "containerIds": {"default": "7345d4bc-b377-41e1-98b2-1e79767f8d97"}, "fail_on_user_mismatch": false, "fail_on_group_mismatch": false, "default_user": "1000331093", "default_group": "10075" }'사용자 및 그룹 매칭은 사용자 이름과 그룹 이름을 기준으로 이루어집니다. 자산 소유권을 이전하지 않으려면 해당
retain_asset_member매개변수를 false로 설정하고 가져오기 사양에 해당members항목을 지정하면 됩니다.user_map: 자산 소유권을 변경하려면 이 매개변수를 지정하십시오. 이 항목이user_map지정되지 않은 경우, 기본적으로 가져오기 작업 후에도 자산은 사용자 이름과 그룹 이름을 기준으로 동일한 사용자와 동일한 사용자 그룹에 계속 속하게 됩니다.예:
카탈로그를 에서 내보내서
SystemA로 가져오려고SystemB합니다.SystemA다음과 같은 세 명의 사용자와 두 개의 사용자 그룹이 있습니다:
사용자:
admin: 1000330992
user1: 1000330991
user2: 1000331004그룹:
group1: 10013
group2: 10014카탈로그에는 다음과 같은 소유권을 가진 세 개의 자산이 있습니다:
asset1 - admin 및
group1 에 속함 asset2 - user1 및
group2 에 속함 asset3 - user2 및 group1 에 속함SystemB다음과 같은 4명의 사용자와 3개의 사용자 그룹이 있습니다:
사용자:
admin: 1000330993
user1: 1000330995
user2: 1000331006
user3: 1000331001그룹:
group1: 10011
group2: 10014
group3: 10018가져오기가 완료된 후, 예시에서 앞서 설명한 바와 같이 자산의 소유권은 변경되지 않습니다. 즉:
asset1 - admin 및
group1 에 속함 asset2 - user1 및
group2 에 속함 asset3 - user2 및 group1 에 속함하지만 더 이상 user1 계정이 없고, 가져오기 과정에서
SystemBSystemBasset2 의 소유권을 다른 사용자(예: user3 )로 변경하려는 경우, 다음 세부 정보를 지정할 수 있습니다:"user_map":{"users":{"1000330992":"1000330993","1000330991":"1000331001","1000331004":"1000331006"},"groups":{"10013":"10011","10014":"10014"}가져오기가 완료되면 자산 소유권이 다음과 같이 변경됩니다:
asset1 - admin 및
group1 에 속함 asset2 - user3 및
group2 에 속함 asset3 - user2 및 group1 에 속함
카탈로그 자산 가져오기
IBM Knowledge Catalog 서비스에 카탈로그 자산을 가져오려면 다음 작업을 수행하십시오. 다른 클러스터에서 생성된 내보내기 파일을 가져오려면, 내보낸 아카이브 파일을 현재 클러스터로 복사한 다음 현재 클러스터에 로그인하십시오.
다른 클러스터에서 내보낸 컨테이너 패키지를 가져올 때는 아카이브 내의 파일에 액세스할 수 있도록 권한을 설정해야 할 수 있습니다. 설정이 필요한지 확인하려면 ‘클러스터 간 가져오기 작업에 대한 권한 구성’을 참조하십시오.
하나의 소스 컨테이너에서 여러 대상 컨테이너로 자산을 가져오는 것은 허용되지 않지만, 여러 소스 컨테이너에서 하나의 대상 컨테이너로 자산을 가져오는 것은 허용됩니다. 이는 컨테이너 간 관계가 올바르게 처리되도록 하기 위함입니다.
명령줄
cpd-cli인터페이스가 설치된 디렉터리로 이동하십시오.내보낸 패키지를 업로드하세요:
cpd-cli export-import export upload -n ${PROJECT_CPD_INST_OPERANDS} \ -f Export_archive_file_name \ --profile=${CPD_PROFILE_NAME}IMPORT_NAME 환경 변수를 가져오기 작업을 식별하는 데 사용할 이름으로 설정하십시오:
export IMPORT_NAME=<name>사용 중인 범위에 맞는 import 명령어를 실행하세요:
- 내보내기 파일의 모든 자산을 가져오려면 다음 명령어를 사용하세요:
cpd-cli export-import import create ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --from-export ${EXPORT_NAME} \ --backoff-limit=0 \ --profile=${CPD_PROFILE_NAME} - 가져올 자산을 선택하려면, 다음 명령어의 ‘가져오기 범위 선택’ 단계에서 생성된 YAML 파일을 참조하십시오:
cpd-cli export-import import create ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --from-export ${EXPORT_NAME} \ --values ${OVERRIDE_YAML_FILE} \ --backoff-limit=0 \ --profile=${CPD_PROFILE_NAME}
- 내보내기 파일의 모든 자산을 가져오려면 다음 명령어를 사용하세요:
가져오기가 완료될 때까지 기다려 주세요. 다음 명령어를 사용하여 가져오기 상태를 확인할 수 있습니다:
cpd-cli export-import import status ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \ --profile=${CPD_PROFILE_NAME}