IBM Cloud Docs
管理资源

管理资源

资源 可配置或预留的物理或逻辑实例。资源的例子包括存储、处理器、内存、数据库、集群和虚拟机。 是指可以从目录中创建的、由资源组管理并包含在资源组中的任何东西。 您可以通过转至 IBM Cloud® 控制台中的 资源列表 或使用命令行界面 (CLI) 来创建和管理资源。

使用 IBM Cloud Identity and Access Management(IAM)访问控制 管理且属于资源组的服务具有若干优点。 由于资源组不受位置限制,因此您可以在同一资源组中创建来自不同位置的应用程序和服务。 您还可以使用下至资源组内单个实例的细颗粒度访问控制。

创建资源所需的访问权

要使帐户中的用户能够从目录创建资源并将其分配给资源组,必须为其分配两个访问策略:

  • 具有对资源组本身的查看者角色或更高角色的策略
  • 具有对帐户中服务的编辑者角色或更高角色的策略

在控制台中创建资源

使用以下步骤在控制台中创建资源:

  1. 在仪表板中,单击“资源摘要”窗口小部件中的查看资源
  2. 单击创建资源。 从此处,您将定向到目录。 您可以根据特定类别,提供者,定价计划,合规性类型或发行版类型来搜索产品或过滤器。 资源示例包括应用程序,服务实例,容器集群,存储卷,虚拟服务器和软件。

创建资源后,该资源将显示在“资源列表”页面上的资源列表中。

使用 CLI 创建资源

您可以使用 IBM Cloud® 命令行界面来创建资源。 有关使用资源的详细信息,请参阅 使用资源和资源组

  1. 登录并选择帐户。
    ibmcloud login
    
  2. 通过运行 ibmcloud resource service-instance-create 命令来创建组织。

在此命令中,NAME 是服务实例的名称,SERVICE_NAME or SERVICE_ID 是服务的名称或标识,SERVICE_PLAN_NAME or SERVICE_PLAN_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的服务实例,并在位置 eu-gb上使用服务 test-service 的服务套餐 test- service-plan :

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 并为 Terraform 配置 IBM Cloud 提供程序插件。 有关更多信息,请参阅 Terraform on IBM Cloud®入门 教程。 该插件对用于完成此任务的 IBM Cloud API 进行抽象。

  • 创建名为 main.tf 的 Terraform 配置文件。 在此文件中,您使用 HashiCorp 配置语言来定义资源。 有关更多信息,请参阅 Terraform 文档

您可以使用 Terraform 创建新的资源实例。

  1. 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 资源管理”页面上的参数参考详细信息。

  2. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。
      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。
      terraform apply
      

搜索资源

您可以在 IBM Cloud® 控制台中的任何位置搜索资源。 请在控制台菜单栏的搜索字段中输入资源或标记。 您还可以使用 IBM Cloud 命令行界面 (CLI) 在各资源中进行搜索。 CLI 会在各个位置和数据中心内搜索分布式应用程序和服务实例。 全局搜索和标记--搜索 API 还支持搜索资源。

优化搜索结果

查看所有目录结果
使用此选项可查看过滤的目录搜索。 这将按名称显示前 5 个结果。 如果要对目录条目应用更详细的搜索条件(例如,搜索描述),那么可以单击此链接来获取过滤的目录结果视图。 此选项可帮助您更快找到要创建的产品。 如果与目录结果相匹配,那么会显示此选项。 如果搜索查询以 tag: 开头,那么不会显示此字段。
搜索支持案例
使用此选项可按平台中打开的支持案例(包括基础架构资源)进行过滤。 如果搜索任何内容(包括按 tag: 进行搜索),那么会在搜索结束时显示此选项。
在 IBM Cloud 文档中搜索
使用此选项可获取文档的过滤搜索。 这将显示在任何搜索的末尾,包括通过 tag: 搜索。

按“正斜杠”键 (/) 可将光标移动到搜索字段。

使用 CLI 进行搜索

您还可以使用 IBM Cloud CLI,通过单个命令使用 Lucene 查询语法搜索所有资源。 可以查询和检索的最常用资源属性有

name
用户定义的资源名称。
region
创建资源的地理位置。 例如,允许的值为 us-south, us-east, au-syd, eu-gb, eu-dejp-tok
service_name
资源 CRN 的 service-name 段中显示的服务名称。 您可以从 ibmcloud catalog service-marketplace 输出的名称列中获取允许的值。
resource_group_id
资源的资源组 ID。
type
资源 CRN resource-type 段中显示的资源类型(如果有)。 数值取决于所拥有的服务。 示例值为:k8-cluster 用于 containers-kubernetes 服务; k8-locationk8-connector 用于 satellite 服务; resource-group 用于 resource-controller 服务; 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

-p classic-infrastructure 已不再用于 _objectType SoftLayer_Virtual_DedicatedHost, SoftLayer_Network_Vlan_Firewall, SoftLayer_Virtual_GuestSoftLayer_Hardware (仅用于经典基础架构裸机服务器),因为现在它们与所有其他非经典基础架构资源一样可被搜索。

搜索经典基础设施资源

要搜索经典基础结构资源,必须将字符串包含在双引号内,以便返回完全匹配的查询字符串。 此外,如果您输入的搜索词中包含连字符 (-),而您又没有用双引号围绕该字符串,则搜索将不会返回完全匹配的结果。 字符串中的连字符用于将术语分成多个字符串。

搜索示例

以下示例可帮助您搜索帐户资源。 未指定 -p classic-infrastucture 参数时,搜索范围包括所有资源,但不包括带有 _objectType SoftLayer_Network_Application_Delivery_ControllerSoftLayer_Network_Subnet_IpAddressSoftLayer_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。 下面的示例会搜索带有标记 "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))

删除资源

如果你不再需要账户中的资源,或者账户中的用户创建了你不想让他们使用的资源,你可以从账户中删除该实例。

在控制台中删除资源

您可以通过以下步骤在控制台中删除资源:

  1. 在仪表板中,单击资源汇总 widget 中的“查看资源”。
  2. 展开各个部分,以找到要删除的服务实例。
  3. 单击该行的操作图标操作图标 > 删除

使用 CLI 删除资源

您可以使用 IBM Cloud® 命令行界面删除资源。 有关管理 IBM Cloud 资源的详细信息,请参阅 使用资源和资源组

  1. 登录并选择帐户。

    ibmcloud login
    
  2. 运行 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

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 删除资源实例的步骤如下。

  1. 从 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 资源管理页面上的参数参考详情。

  2. 完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录

    terraform init
    
  3. main.tf 文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构

    1. 运行 terraform plan 以生成 Terraform 执行计划来预览建议的操作。

      terraform plan
      
    2. 运行 terraform apply 以创建计划中定义的资源。

      terraform apply
      

也可以通过运行以下 terraform destroy 命令删除资源实例:

terraform destroy -target RESOURCE_TYPE.NAME -target RESOURCE_TYPE2.NAME