管理资源
资源 可配置或预留的物理或逻辑实例。资源的例子包括存储、处理器、内存、数据库、集群和虚拟机。 是指可以从目录中创建的、由资源组管理并包含在资源组中的任何东西。 您可以通过转至 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
是服务的名称或标识,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 创建新的资源实例。
-
在
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 资源管理”页面上的参数参考详细信息。 -
完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录。
terraform init
-
从
main.tf
文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构。- 运行
terraform plan
以生成 Terraform 执行计划来预览建议的操作。terraform plan
- 运行
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-de
和jp-tok
。 service_name
- 资源 CRN 的
service-name
段中显示的服务名称。 您可以从ibmcloud catalog service-marketplace
输出的名称列中获取允许的值。 resource_group_id
- 资源的资源组 ID。
type
- 资源 CRN
resource-type
段中显示的资源类型(如果有)。 数值取决于所拥有的服务。 示例值为:k8-cluster
用于containers-kubernetes
服务;k8-location
和k8-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_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。 下面的示例会搜索带有标记 "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))
删除资源
如果你不再需要账户中的资源,或者账户中的用户创建了你不想让他们使用的资源,你可以从账户中删除该实例。
在控制台中删除资源
您可以通过以下步骤在控制台中删除资源:
- 在仪表板中,单击资源汇总 widget 中的“查看资源”。
- 展开各个部分,以找到要删除的服务实例。
- 单击该行的操作图标
> 删除。
使用 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。
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 删除资源实例的步骤如下。
-
从 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 资源管理页面上的参数参考详情。
-
完成构建配置文件后,初始化 Terraform CLI。 有关更多信息,请参阅 初始化工作目录。
terraform init
-
从
main.tf
文件供应资源。 有关更多信息,请参阅 使用 Terraform 供应基础架构。-
运行
terraform plan
以生成 Terraform 执行计划来预览建议的操作。terraform plan
-
运行
terraform apply
以创建计划中定义的资源。terraform apply
-
也可以通过运行以下 terraform destroy
命令删除资源实例:
terraform destroy -target RESOURCE_TYPE.NAME -target RESOURCE_TYPE2.NAME