리소스 관리
리소스란 프로비저닝 또는 예약이 가능한 물리적 또는 논리적 인스턴스입니다.리소스의 예로는 스토리지, 프로세서, 메모리, 데이터베이스, 클러스터, 가상 머신 등이 있습니다. 카탈로그에서 생성할 수 있고 리소스 그룹에 의해 관리되고 그 안에 포함된 모든 것을 말합니다. IBM Cloud® 콘솔에서 사용자의 리소스 목록으로 이동하거나 명령행 인터페이스(CLI)를 사용하여 리소스를 작성하고 관리할 수 있습니다.
IBM Cloud Identity and Access Management(IAM) 액세스 제어를사용하여 관리되며 리소스 그룹에 속하는 서비스에는 몇 가지 이점이 있습니다. 리소스 그룹은 위치별로 범위가 지정되지 않으므로 동일한 리소스 그룹에 있는 여러 위치에서 앱과 서비스를 만들 수 있습니다. 또한 리소스 그룹 내에서 개별 인스턴스에 이르기까지 세분화된 액세스 제어를 사용할 수도 있습니다.
리소스를 작성하는 데 필요한 액세스 권한
계정의 사용자가 카탈로그로부터 리소스를 작성하고 이를 리소스 그룹에 지정하려면 두 가지 액세스 정책을 지정해야 합니다.
- 리소스 그룹 자체에 대한, 뷰어 이상의 역할을 사용하는 정책
- 계정 내 서비스에 대한, 편집자 이상의 역할을 사용하는 정책
콘솔에서의 리소스 작성
콘솔에서 리소스를 작성하려면 다음 단계를 수행하십시오.
- 대시보드의 리소스 요약 위젯에서 리소스 보기를 클릭하십시오.
- 리소스 작성을 클릭하십시오. 여기에서 카탈로그로 이동됩니다. 특정 카테고리, 제공업체, 요금제, 규정 준수 유형 또는 릴리스 유형에 따라 제품을 검색하거나 필터링할 수 있습니다. 리소스 예로는 앱, 서비스 인스턴스, 컨테이너 클러스터, 스토리지 볼륨, 가상 서버 및 소프트웨어가 있습니다.
자원을 작성한 후 자원 목록 페이지의 자원 목록에 자원이 표시됩니다.
CLI를 사용하여 리소스 작성
IBM Cloud® 명령행 인터페이스를 사용하여 리소스를 작성할 수 있습니다. 리소스 관련 작업에 대한 자세한 정보는 리소스 및 리소스 그룹에 대한 작업을 참조하십시오.
- 로그인하여 계정을 선택하십시오.
ibmcloud login ibmcloud resource service-instance-create명령을 실행하여 조직을 작성하십시오.
이 명령에서 NAME은 서비스 인스턴스의 이름이고, SERVICE_NAME or SERVICE_ID는 서비스의 이름 또는 ID이고, SERVICE_PLAN_NAME or SERVICE_PLAN_ID는 서비스 플랜의 이름 또는 ID이고, LOCATION은 서비스 인스턴스를 작성할 대상 위치 또는 환경입니다.
ibmcloud resource service-instance-create NAME (SERVICE_NAME | SERVICE_ID) SERVICE_PLAN_NAME LOCATION [-d, --deployment DEPLOYMENT_NAME] [-p, --parameters @JSON_FILE | JSON_STRING ] [-g RESOURCE_GROUP] [--service-endpoints SERVICE_ENDPOINTS_TYPE] [--allow-cleanup] [--lock]
서비스를 나열하려면 ibmcloud catalog service-marketplace 명령을 사용하십시오.
예를 들어 다음 명령은 my-service-instance라는 서비스 인스턴스를 작성하고, test- service-plan 위치에서 test-service 서비스의 서비스 플랜 eu-gb을 사용합니다.
ibmcloud resource service-instance-create my-service-instance test-service test-service-plan eu-gb
API를 사용하여 새 리소스 인스턴스 작성
다음 샘플 요청에 표시되어 있는 바와 같이 리소스 제어기 API를 호출하여 새 리소스 인스턴스를 프로그래밍 방식으로 작성할 수 있습니다. API에 대한 자세한 내용은 리소스 컨트롤러 API를 참조하세요.
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "my-instance",
"target": "bluemix-global",
"resource_group": "5g9f447903254bb58972a2f3f5a4c711",
"resource_plan_id": "0be5ad401ae913d8ff665d92680664ed",
"tags": [
"my-tag"
]
}'
CreateResourceInstanceOptions createResourceInstanceOptions = new CreateResourceInstanceOptions.Builder()
.name(resourceInstanceName)
.target(targetRegion)
.resourceGroup(resourceGroup)
.resourcePlanId(resourcePlanId)
.build();
Response<ResourceInstance> response = service.createResourceInstance(createResourceInstanceOptions).execute();
ResourceInstance resourceInstance = response.getResult();
System.out.printf("createResourceInstance() response:\n%s\n", resourceInstance.toString());
const params = {
name: resourceInstanceName,
target: targetRegion,
resourceGroup: resourceGroupGuid,
resourcePlanId: resourcePlanId,
};
resourceControllerService.createResourceInstance(params)
.then(res => {
instanceGuid = res.result.guid;
console.log('createResourceInstance() response:\n' + JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
resource_instance = resource_controller_service.create_resource_instance(
name=resource_instance_name,
target=target_region,
resource_group=resource_group,
resource_plan_id=resource_plan_id
).get_result()
print('\ncreate_resource_instance() response:\n',
json.dumps(resource_instance, indent=2))
createResourceInstanceOptions := resourceControllerService.NewCreateResourceInstanceOptions(
resourceInstanceName,
targetRegion,
resourceGroup,
resourcePlanID,
)
resourceInstance, response, err := resourceControllerService.CreateResourceInstance(createResourceInstanceOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(resourceInstance, "", " ")
fmt.Printf("\nCreateResourceInstance() response:\n%s\n", string(b))
API를 사용하여 소프트웨어 설치
콘솔 또는 CLI를 통해서만 소프트웨어를 설치할 수 있습니다. 단계를 보려면 UI 또는 CLI 지시사항으로 전환하십시오.
Terraform을 사용하여 새 자원 인스턴스 작성하기
Terraform을 사용하여 새 리소스 인스턴스를 생성하려면 먼저 다음 사항을 완료해야 합니다:
-
Terraform CLI를 설치하고 IBM Cloud 제공자 플러그인을 구성합니다. 자세한 내용은 IBM Cloud® 에서 Terraform 시작하기 튜토리얼을 참조하세요. 플러그인은 이 태스크를 완료하는 데 사용되는 IBM Cloud API를 요약합니다.
-
이름이
main.tf인 Terraform 구성 파일을 작성하십시오. 이 파일에서는 HashiCorp 구성 언어를 사용하여 리소스를 정의합니다. 자세한 내용은 테라폼 문서를 참조하세요.
Terraform을 사용하여 새 자원 인스턴스를 작성할 수 있습니다.
-
main.tf파일에 인수를 생성합니다. 다음 예제에서는ibm_resource_instance자원을 사용하여 새 자원 인스턴스를 작성합니다. 여기서name은 자원 인스턴스를 식별하기 위한 고유한 설명 이름입니다.data "ibm_resource_group" "group" { name = "test" } resource "ibm_resource_instance" "resource_instance" { name = "test" service = "cloud-object-storage" plan = "lite" location = "global" resource_group_id = data.ibm_resource_group.group.id tags = ["tag1", "tag2"] //User can increase timeouts timeouts { create = "15m" update = "15m" delete = "15m" } }자원 인스턴스와 연관된
tags를 지정할 수 있습니다. 자세한 내용은 테라폼 리소스 관리 페이지의 인수 참조 세부 정보를 참조하세요. -
구성 파일 빌드를 완료한 후 Terraform CLI를 초기화합니다. 자세한 내용은 작업 디렉터리 초기화를 참조하세요.
terraform init -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform planterraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
리소스 검색
IBM Cloud® 콘솔의 어느 위치에서나 리소스를 검색할 수 있습니다. 콘솔 메뉴 표시줄의 검색 필드에 리소스 또는 태그를 입력하십시오. IBM Cloud 명령행 인터페이스(CLI)를 사용하여 리소스에서 검색할 수도 있습니다. CLI는 위치와 데이터 센터 전체에서 분산 애플리케이션 및 서비스 인스턴스를 검색합니다. 글로벌 검색 및 태그 지정 - 검색 API에서도 리소스 검색을 지원합니다.
검색 결과 세분화
- 모든 카탈로그 결과 보기
- 필터링된 카탈로그 검색을 보려면 이 옵션을 사용하십시오. 처음 5개의 결과가 이름별로 표시됩니다. 카탈로그 항목에 대한 세부적인 검색 기준을 원하는 경우(예: 설명 검색) 이 링크를 클릭하여 필터링된 카탈로그 결과 보기를 가져올 수 있습니다. 이 옵션은 작성할 오퍼링을 빠르게 찾는 데 도움이 됩니다. 이 옵션은 카탈로그 결과와 일치하는 경우에 표시됩니다. 검색 조회가
tag:로 시작하는 경우에는 이 필드가 표시되지 않습니다. - 검색 지원 케이스
- 인프라 리소스를 포함하여 플랫폼 전체에서 열린 지원 케이스를 기준으로 필터링하려면 이 옵션을 사용하십시오.
tag:로 검색하는 경우를 포함하여 임의의 항목을 검색하는 경우 검색의 끝에 이 옵션이 표시됩니다. - IBM Cloud 문서에서 검색
- 필터링된 문서 검색을 가져오려면 이 옵션을 사용하십시오. 이는
tag:로 검색하는 경우를 포함하여 모든 검색 끝에 표시됩니다.
커서를 검색 필드로 이동하려면 슬래시 키(/)를 누르십시오.
CLI를 사용하여 검색
또한 Lucene 쿼리 구문을 사용하여 모든 리소스를 검색할 수도 있으며, IBM Cloud CLI를 사용하여 단일 명령으로 모든 리소스를 검색할 수도 있습니다. 쿼리하고 검색할 수 있는 가장 일반적으로 사용되는 리소스 속성은 다음과 같습니다:
name- 리소스의 사용자 정의 이름입니다.
region- 리소스가 생성된 지리적 위치입니다. 예를 들어, 허용되는 값은
us-south,us-east,au-syd,eu-gb,eu-de및jp-tok입니다. service_name- 리소스 CRN의
service-name세그먼트에 표시되는 서비스 이름입니다.ibmcloud catalog service-marketplace출력의 이름 열에서 허용되는 값을 가져올 수 있습니다. resource_group_id- 리소스의 리소스 그룹 ID입니다.
type- 리소스 유형이 있는 경우 리소스 CRN의
resource-type세그먼트에 표시되는 리소스 유형입니다. 값은 소유 서비스에 따라 다릅니다.containers-kubernetes서비스의 경우k8-cluster,satellite서비스의 경우k8-location및k8-connector,resource-controller서비스의 경우resource-group,vpc,volume,vpn,load-balancer,security-group,is서비스의 경우workspace,schematics서비스의 경우 입니다. creation_date- 리소스가 작성된 날짜입니다.
modification_date- 마지막으로 리소스가 수정된 날짜입니다.
tags- 리소스에 첨부된 태그입니다.
access_tags- 리소스에 첨부된 액세스 관리 태그입니다.
service_tags- 리소스에 첨부된 서비스 태그입니다.
tagReferences.tag.name- 클래식 인프라 리소스에 첨부된 태그입니다.
-p classic-infrastructure매개변수를 지정해야 합니다. _objectType:- 클래식 인프라 리소스의 오브젝트 유형입니다. 허용되는 값은 다음과 같습니다.
SoftLayer_Virtual_DedicatedHost,SoftLayer_Hardware,SoftLayer_Network_Application_Delivery_Controller,SoftLayer_Network_Subnet_IpAddress,SoftLayer_Network_Vlan,SoftLayer_Network_Vlan_Firewall,SoftLayer_Virtual_Guest.-p classic-infrastructure매개변수를 지정해야 합니다.
tagReferences.tag.name 및 _objectType 플래그는 -p classic-infrastructure 플래그를 사용할 때만 유효합니다.
클래식 인프라 리소스가 아닌 다른 모든 리소스로 검색 가능하므로 _objectType -p classic-infrastructure, SoftLayer_Virtual_DedicatedHost, SoftLayer_Network_Vlan_Firewall 및 SoftLayer_Virtual_Guest에 대해 SoftLayer_Hardware가(클래식
인프라 베어메탈 서버 전용) 더 이상 사용되지 않습니다.
클래식 인프라 리소스 검색
클래식 인프라 리소스를 검색하려면 쿼리 문자열과 정확히 일치하는 문자열이 반환되도록 문자열을 큰따옴표 안에 넣어야 합니다. 또한 하이픈(-)이 포함된 검색어를 입력할 때 문자열을 큰따옴표로 묶지 않으면 검색 결과에서 정확히 일치하는 항목이 반환되지 않습니다. 문자열 내의 하이픈은 검색어를 여러 문자열로 구분하는 데 사용됩니다.
검색 예제
다음 예제는 계정 리소스를 검색하는 데 도움이 될 수 있습니다.
-p classic-infrastucture 매개변수가 지정되지 않으면 검색 범위는 _objectType SoftLayer_Network_Application_Delivery_Controller, SoftLayer_Network_Subnet_IpAddress 또는 SoftLayer_Hardware(베어메탈
서버 제외)가 포함된 클래식 인프라 리소스를 제외한 모든 리소스입니다.
-
ABC라는 모든 리소스를 검색하려면 다음 명령을 입력하십시오.ibmcloud resource search ‘name:ABC’ -
Message Hub의 모든 서비스 인스턴스를 검색하려면 다음 명령을 입력하십시오.
ibmcloud resource search 'service_name:messagehub' -
2020년 5월 16일에서 2020년 5월 20일 사이에 작성된 클래식 인프라가 있는 리소스를 검색하려면 다음 명령을 입력하십시오.
ibmcloud resource search 'creation_date:["2020-05-16T00:00:00Z" TO "2020-05-20T00:00:00Z"]' -
유형별로 정렬된, 이름이 "my"로 시작하고 클래식 인프라가 아닌 리소스를 검색하려면 다음 명령을 입력하십시오.
ibmcloud resource search 'name:my*' -s type -
클래식 인프라가 아니며
my-tag로 태그가 지정된 리소스를 검색하려면 다음 명령을 입력하세요:ibmcloud resource search 'tags:my-tag' -
완전한 도메인 이름이
MyVM인 모든 클래식 인프라 가상 서버를 검색하려면 다음 명령을 입력하십시오.ibmcloud resource search “doc.fullyQualifiedDomainName:MyVM AND service_name:virtual-server" -
my-tag로 태그가 지정된 모든 클래식 인프라 리소스를 검색하려면 다음 명령을 입력합니다:ibmcloud resource search 'tagReferences.tag.name:my-tag' -p classic-infrastructure -
모든 클래식 인프라 유형을 검색하려면
SoftLayer_Network_Vlan, 다음 명령을 입력합니다:ibmcloud resource search '_objectType:SoftLayer_Network_Vlan' -p classic-infrastructure
API를 사용하여 검색
리소스를 검색하려면 글로벌 검색 및 태그 지정 - 검색 API를 호출하십시오. 다음 예에서는 "project:myproject" 태그가 첨부된 모든 리소스를 검색합니다.
SearchOptions.Builder를 사용하여 SearchOptions 메소드에 대한 매개변수 값이 포함된 search 오브젝트를 작성하십시오.
SearchOptions 구조를 인스턴스화하고 Search 메소드에 대한 매개변수값을 제공하도록 필드를 설정하십시오.
curl -X POST -H "Authorization: {iam_token}" -H "Accept: application/json" -H "Content-Type: application/json" -d '{"query": "tags:project\\:myproject OR access_tags:project\\:myproject", "fields": ["*"]}' "api.global-search-tagging.cloud.ibm.com/v3/resources/search"
SearchOptions searchOptions = new SearchOptions.Builder()
.query("GST-sdk-*")
.fields(new java.util.ArrayList<String>(java.util.Arrays.asList("*")))
.searchCursor(searchCursor)
.build();
Response<ScanResult> response = service.search(searchOptions).execute();
ScanResult scanResult = response.getResult();
System.out.println(scanResult);
const params = {
query: 'GST-sdk-*',
fields: ['*'],
searchCursor: searchCursor,
};
globalSearchService.search(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
response = global_search_service.search(query='GST-sdk-*',
fields=['*'])
scan_result = response.get_result()
print(json.dumps(scan_result, indent=2))
searchOptions := globalSearchService.NewSearchOptions()
searchOptions.SetLimit(10)
searchOptions.SetQuery("GST-sdk-*")
searchOptions.SetFields([]string{"*"})
scanResult, response, err := globalSearchService.Search(searchOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(scanResult, "", " ")
fmt.Println(string(b))
리소스 삭제
리소스가 계정에 더 이상 필요하지 않거나 계정의 사용자가 사용하지 않을 리소스를 작성한 경우 인스턴스를 계정에서 삭제할 수 있습니다.
콘솔에서의 리소스 삭제
다음 단계를 사용하여 콘솔에서 리소스를 삭제할 수 있습니다.
- 대시보드의 리소스 요약 위젯에서 리소스 보기를 클릭하십시오.
- 섹션을 펼쳐서 삭제하려는 서비스 인스턴스를 찾으십시오.
- 행에 대해 조치 아이콘
> 삭제를 클릭하십시오.
CLI를 사용하여 리소스 삭제
IBM Cloud® 명령행 인터페이스를 사용하여 리소스를 삭제할 수 있습니다. IBM Cloud 리소스 관리에 대한 자세한 정보는 리소스 및 리소스 그룹에 대한 작업을 참조하십시오.
-
로그인하여 계정을 선택하십시오.
ibmcloud login -
ibmcloud resource service-instance-delete명령을 실행하여 서비스 인스턴스를 삭제하십시오. 여기서NAME은 서비스 인스턴스의 이름으로 ID와 배타적이며,ID는 서비스 인스턴스의 ID로, NAME과 배타적입니다.ibmcloud resource service-instance-delete (NAME|ID) [-f, --force] [--recursive]예를 들어, 다음 명령은
my-service-instance라는 자원 서비스 인스턴스를 삭제합니다.ibmcloud resource service-instance-delete my-service-instance
API를 사용하여 리소스 삭제
다음 샘플 요청에 표시되어 있는 바와 같이 리소스 제어기 API를 호출하여 리소스 인스턴스를 프로그래밍 방식으로 삭제할 수 있습니다. API에 대한 자세한 내용은 리소스 컨트롤러 API를 참조하세요.
curl -X DELETE \
https://resource-controller.cloud.ibm.com/v2/resource_instances/8d7af921-b136-4078-9666-081bd8470d94 \
-H 'Authorization: Bearer <>'
DeleteResourceInstanceOptions deleteResourceInstanceOptions = new DeleteResourceInstanceOptions.Builder()
.id(instanceGuid)
.recursive(false)
.build();
Response<Void> response = service.deleteResourceInstance(deleteResourceInstanceOptions).execute();
System.out.printf("deleteResourceInstance() response status code: %d\n", response.getStatusCode());
const params = {
id: instanceGuid,
recursive: false,
};
resourceControllerService.deleteResourceInstance(params)
.then(res => {
console.log('deleteResourceInstance() response status code: ' + res.status);
})
.catch(err => {
console.warn(err)
});
response = resource_controller_service.delete_resource_instance(
id=instance_guid,
recursive=False
)
print('\ndelete_resource_instance() response status code: ',
response.get_status_code())
deleteResourceInstanceOptions := resourceControllerService.NewDeleteResourceInstanceOptions(
instanceGUID,
)
deleteResourceInstanceOptions.SetRecursive(false)
response, err := resourceControllerService.DeleteResourceInstance(deleteResourceInstanceOptions)
if err != nil {
panic(err)
}
fmt.Printf("\nDeleteResourceInstance() response status code: %d\n", response.StatusCode)
Terraform을 사용하여 자원 인스턴스 삭제하기
테라폼을 사용하여 리소스 인스턴스를 삭제하려면 다음 단계를 따르세요.
-
Terraform 파일에서 다음 코드 블록을 제거하여 자원 인스턴스를 삭제할 수 있습니다. 테라폼 파일을 사용하여
resource_instance을 생성했어야 합니다.data "ibm_resource_group" "group" { name = "test" } resource "ibm_resource_instance" "resource_instance" { name = "test" service = "cloud-object-storage" plan = "lite" location = "global" resource_group_id = data.ibm_resource_group.group.id tags = ["tag1", "tag2"] //User can increase timeouts timeouts { create = "15m" update = "15m" delete = "15m" } }자세한 내용은 테라폼 리소스 관리 페이지의 인수 참조 세부 정보를 참조하세요.
-
구성 파일 빌드를 완료한 후 Terraform CLI를 초기화합니다. 자세한 내용은 작업 디렉터리 초기화를 참조하세요.
terraform init -
main.tf파일에서 리소스를 프로비저닝합니다. 자세한 내용은 Terraform으로 인프라 프로비저닝을 참조하세요.-
terraform plan을 실행하여 테라폼 실행 계획을 생성하여 제안된 작업을 미리 볼 수 있습니다.terraform plan -
terraform apply을 실행하여 플랜에 정의된 리소스를 만듭니다.terraform apply
-
다음 terraform destroy 명령을 실행하여 리소스 인스턴스를 삭제할 수도 있습니다:
terraform destroy -target RESOURCE_TYPE.NAME -target RESOURCE_TYPE2.NAME