管理资源组
资源组是一种自定义分组管理账户资源的方式,您可以快速为多个资源同时分配用户访问权限。 使用 IBM Cloud® Identity and Access Management (IAM) 访问控制来管理的任何帐户资源都属于您帐户中的资源组。 您可以对资源进行分组,并分配对使用 IAM 的个别服务实例或整个资源组的访问权。
要开始管理您的资源组,请在 IBM Cloud® 控制台中依次选择 “管理” > “账户”> “账户资源”> “资源组”。 您可以创建、查看和重命名资源组,添加资源以及管理对资源组的访问权。 您还可以删除任何资源组,前提是该资源组不包含任何资源,并且不是缺省资源组。 IBM Cloud 帐户所有者可以向任何资源组添加资源,但必须使用 IAM 访问策略向其他用户授予访问权。
如需了解与资源组合作的更多信息,请参阅 《组织资源和分配访问权限的最佳实践 》。
创建资源组
如果您拥有现收现付或预订帐户,那么可以创建多个资源组,从而轻松地管理配额和查看一组资源的计费使用情况。 您还可以对资源进行分组,从而更轻松地为用户一次性分配对多个实例的访问权。 每个账户最多可拥有 1000 个资源组。 您必须分配有具有所有帐户管理服务的“管理员”角色的 IAM 策略,才能创建更多资源组。 如果您拥有轻量帐户或 30 天试用帐户,那么不能创建额外的资源组,但可以重命名缺省资源组。
在控制台中创建资源组
- 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组。
- 单击创建。
- 输入资源组的名称。
- 单击创建。
使用 CLI 创建资源组
您可以使用IBM Cloud®创建和重命名资源组,或查看其中的资源。命令行界面查看资源。 有关使用资源的详细信息,请参阅 使用资源和资源组。
- 登录并选择帐户。
ibmcloud login
- 运行 "
ibmcloud resource group-create
命令创建一个新的资源组。 例如,以下命令将创建名为group2
的资源组:
ibmcloud resource group-create group2
使用API创建资源组
如果您拥有现收现付或预订帐户,那么可以创建多个资源组,从而轻松地管理配额和查看一组资源的计费使用情况。 您还可以对资源进行分组,从而更轻松地为用户一次性分配对多个实例的访问权。
您必须分配有具有所有帐户管理服务的“管理员”角色的 IAM 策略,才能创建更多资源组。 如果您拥有轻量帐户或 30 天试用帐户,那么不能创建额外的资源组,但可以重命名缺省资源组。
要创建资源组,请调用 IBM Cloud® Resource ManagerAPI,如下例所示:
curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_groups -H 'Authorization: Bearer <IAM_TOKEN>'
-H 'Content-Type: application/json' -d '{
"account_id": "987d4cfd77b04e9b9e1a6asdcc861234",
"name": "test"
}'
CreateResourceGroupOptions createResourceGroupOptions = new CreateResourceGroupOptions.Builder()
.accountId(exampleUserAccountId)
.name("ExampleGroup")
.build();
Response<ResCreateResourceGroup> response = resourceManagerService.createResourceGroup(createResourceGroupOptions).execute();
ResCreateResourceGroup resCreateResourceGroup = response.getResult();
System.out.println(resCreateResourceGroup);
const params = {
accountId: exampleUserAccountId,
name: "ExampleGroup"
};
resourceManagerService.createResourceGroup(params)
.then(res => {
resourceGroupId = res.result.id;
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
res_create_resource_group = resource_manager_service.create_resource_group(
account_id=example_user_account_id,
name='ExampleGroup',
).get_result()
print(json.dumps(res_create_resource_group, indent=2))
createResourceGroupOptions := resourceManagerService.NewCreateResourceGroupOptions()
createResourceGroupOptions.SetAccountID(exampleUserAccountID)
createResourceGroupOptions.SetName("ExampleGroup")
resCreateResourceGroup, response, err := resourceManagerService.CreateResourceGroup(createResourceGroupOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(resCreateResourceGroup, "", " ")
fmt.Println(string(b))
准备工作
在使用 Terraform 管理资源组之前,请确保已完成以下步骤:
-
安装 Terraform CLI 并为 Terraform 配置IBM Cloud提供商插件。提供商插件。 更多信息,请参阅 IBM Cloud®上的 Terraform 入门 教程。 该插件抽象了用于完成此任务的IBM CloudAPI。用于完成此任务的 API。
-
创建一个名为
main.tf
的Terraform配置文件。 在此文件中,您可以使用HashiCorp配置语言定义资源。 更多信息,请参阅 Terraform 文档。
使用Terraform创建资源组
使用 Terraform 创建资源组的步骤如下:
-
在 "
main.tf
文件中创建一个参数。 下面的示例使用“ibm_resource_group
资源创建了一个资源组,其中”name
是标识资源组的唯一名称。resource "ibm_resource_group" "resourceGroup" { name = "prod" }
您可以指定与资源组实例相关联的 "
tags
。 有关详细信息,请参阅 Terraform 资源管理页面上的参数参考详情。 -
完成构建配置文件后,初始化 Terraform CLI。 更多信息,请参阅 初始化工作目录。
terraform init
-
提供 "
main.tf
文件中的资源。 如需了解更多信息,请参阅 使用 Terraform 配置基础架构。- 运行 "
terraform plan
生成 Terraform 执行计划,以预览建议的操作。terraform plan
- 运行 "
terraform apply
,创建计划中定义的资源。terraform apply
- 运行 "
重命名资源组
已为您创建第一个资源组并命名为 Default
。 您可以更新此组的名称或您所创建的任何其他组的名称。
在控制台中重命名资源组
- 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组。
- 单击 "操作
菜单,然后选择 "重命名"。
- 输入唯一名称,然后单击保存。
使用 CLI 重命名资源组
- 登录并选择帐户。
ibmcloud login
- 运行 "
ibmcloud resource group-update
命令重命名资源组。 例如,以下命令将Default
资源组重命名为Admin
:
ibmcloud resource group-update Default [-n, --name Admin]
使用API重命名资源组
变量 "name
表示资源组的新名称。 有关详细信息,请参阅 更新资源组。
curl -X PATCH https://resource-controller.cloud.ibm.com/v2/resource_groups/09f8c1c0742c493f80baaf7835212345 -H 'Authorization: Bearer <IAM_TOKEN>'
-H 'Content-Type: application/json' -d '{
"name": "test1"
}'
UpdateResourceGroupOptions updateResourceGroupOptions = new UpdateResourceGroupOptions.Builder()
.id(resourceGroupId)
.name("RenamedExampleGroup")
.state("ACTIVE")
.build();
Response<ResourceGroup> response = resourceManagerService.updateResourceGroup(updateResourceGroupOptions).execute();
ResourceGroup resourceGroup = response.getResult();
System.out.println(resourceGroup);
const params = {
id: resourceGroupId,
state: 'ACTIVE',
name: 'RenamedExampleGroup'
};
resourceManagerService.updateResourceGroup(params)
.then(res => {
console.log(JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
resource_group = resource_manager_service.update_resource_group(
id=resource_group_id,
name='RenamedExampleGroup',
state='ACTIVE',
).get_result()
print(json.dumps(resource_group, indent=2))
updateResourceGroupOptions := resourceManagerService.NewUpdateResourceGroupOptions(
resourceGroupID,
)
updateResourceGroupOptions.SetName("RenamedExampleGroup")
updateResourceGroupOptions.SetState("ACTIVE")
resourceGroup, response, err := resourceManagerService.UpdateResourceGroup(updateResourceGroupOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(resourceGroup, "", " ")
fmt.Println(string(b))
使用Terraform重命名资源组
您可以使用 Terraform 重新命名资源组。
-
要安装 Terraform CLI 并为 Terraform 配置IBM Cloud上的 Terraform 入门教程。提供商插件,请参考 IBM Cloud®上的 Terraform 入门 教程。 该插件抽象了用于完成此任务的IBM CloudAPI。用于完成此任务的 API。
-
创建一个名为
main.tf
的Terraform配置文件。 在此文件中,您可以使用HashiCorp配置语言添加重命名资源组的配置。 更多信息,请参阅 Terraform 文档。在下面的示例中,您可以使用新值更新 "
name
,重新命名资源组。resource "ibm_resource_group" "resourceGroup" { name = "prod" }
有关详细信息,请参阅 Terraform 资源管理页面上的参数参考详情。
-
初始化 Terraform CLI。
terraform init
-
运行 "
terraform plan
生成 Terraform 执行计划,以预览建议的操作。 Terraform 执行计划汇总了重命名资源组所需运行的所有操作。terraform plan
-
重命名资源组。
terraform apply
向资源组添加资源
使用 IAM 管理的服务属于一个资源组。 在目录中创建其中一个服务的实例时,系统会提示您将该实例分配给资源组。 因此在将资源分配给资源组之前,务必对帐户中资源的分组方式进行规划。 创建实例时选择的资源组是最终选择,无法更改。
创建实例时选择的资源组是最终选择,无法更改。
IBM Cloud 帐户所有者可以向任何资源组添加资源,但必须使用 IAM 访问策略向其他用户授予访问权。 帐户中的用户必须分配有两种访问策略,才能通过目录创建资源并将其添加到资源组:
- 具有对资源组本身的查看者角色或更高角色的策略
- 具有对帐户中服务的编辑者角色或更高角色的策略
要将资源添加到资源组,请完成以下步骤:
- 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组。
- 单击 "操作
菜单,然后选择 "添加资源"。
- 从这里,您可以进入目录。 您可以搜索产品,或根据特定类别、提供商、定价计划、合规类型或发布类型进行筛选。 资源的例子包括应用程序、服务实例、容器群集、存储卷、虚拟服务器和软件。
使用 API 将资源添加到资源组中
请参阅 管理目录设置,设置IBM Cloud®目录的可见性,并控制账户中用户对公共目录和私有目录中产品的访问。
查看资源组中的资源
要轻松查看分配给资源组的资源,请转到导航菜单图标 > 资源列表。 然后,按资源组进行筛选。
如果在“资源列表”页面上找不到经典基础架构资源,请单击“导航菜单”图标>经典基础架构>“设备列表”检查“设备列表”。
使用 CLI 查看资源组中的资源
-
登录并选择帐户。
ibmcloud login
-
运行 "
ibmcloud resource service-instances
命令,查看分配给特定资源组的资源。 例如,以下命令列出了Default
资源组中的所有资源:
ibmcloud resource service-instances -g Default
使用 API 查看资源组中的资源
要查看资源组中的资源,请调用 IBM Cloud®资源控制器 API,如下例所示:
curl -X GET https://resource-controller.cloud.ibm.com/v2/resource_instances -H 'Authorization: Bearer <>'
ListResourceInstancesOptions listResourceInstancesOptions = new ListResourceInstancesOptions.Builder()
.name(resourceInstanceName)
.build();
Response<ResourceInstancesList> response = service.listResourceInstances(listResourceInstancesOptions).execute();
ResourceInstancesList resourceInstancesList = response.getResult();
System.out.printf("listResourceInstances() response:\n%s\n", resourceInstancesList.toString());
const params = {
name: resourceInstanceName,
};
resourceControllerService.listResourceInstances(params)
.then(res => {
console.log('listResourceInstances() response:\n' + JSON.stringify(res.result, null, 2));
})
.catch(err => {
console.warn(err)
});
resource_instances_list = resource_controller_service.list_resource_instances(
name=resource_instance_name
).get_result()
print('\nlist_resource_instances() response:\n',
json.dumps(resource_instances_list, indent=2))
listResourceInstancesOptions := resourceControllerService.NewListResourceInstancesOptions()
listResourceInstancesOptions = listResourceInstancesOptions.SetName(resourceInstanceName)
resourceInstancesList, response, err := resourceControllerService.ListResourceInstances(listResourceInstancesOptions)
if err != nil {
panic(err)
}
b, _ := json.MarshalIndent(resourceInstancesList, "", " ")
fmt.Printf("\nListResourceInstances() response:\n%s\n", string(b))
使用控制台删除资源组
不能删除添加到帐户的缺省资源组。 除了默认的资源组,只有当资源组不包含任何资源时,才能将其删除。
要删除不包含资源且不是默认资源的资源组,请完成以下步骤:
- 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组。
- 单击操作图标
>删除。
使用CLI删除资源组
要删除不包含资源且不是默认资源的资源组,请运行 "ibmcloud resource group-delete
。 例如,删除资源组 "example-group
ibmcloud resource group-delete example-group -f
使用API删除资源组
如以下示例请求所示,您可以通过调用Resource ManagerAPI 以编程方式删除资源组。 有关 API 的详细信息,请参阅 Resource ManagerAPI。
curl -X DELETE \
https://resource-controller.cloud.ibm.com/v2/resource_groups/09f8c1c0742c493f80baaf7835212345 \
-H 'Authorization: Bearer <IAM_TOKEN>'
-H 'Content-Type: application/json'
String id = '09f8c1c0742c493f80baaf7835212345';
DeleteResourceGroupOptions options = new DeleteResourceGroupOptions.Builder().id(id).build();
Response<Void> response = service.deleteResourceGroup(options).execute();
System.out.println(response):
const params = {
id: '09f8c1c0742c493f80baaf7835212345'
};
service.deleteResourceGroup(params).then(response => {
console.log(response)
}).catch(err => {});
delete_resource_group(self,
id: str,
**kwargs
) -> DetailedResponse
ID := "09f8c1c0742c493f80baaf7835212345"
deleteResourceGroupOptionsModel := service.NewDeleteResourceGroupOptions(ID)
detailedResponse, err := service.DeleteResourceGroup(deleteResourceGroupOptionsModel)
使用 Terraform 删除资源组
在使用 Terraform 删除资源组之前,请确保已完成以下操作:
- 安装 Terraform CLI 并为 Terraform 配置IBM Cloud提供商插件。提供商插件。 更多信息,请参阅 IBM Cloud®上的 Terraform 入门 教程。 该插件抽象了用于完成此任务的IBM CloudAPI。用于完成此任务的 API。
- 创建一个名为
main.tf
的Terraform配置文件。 在此文件中,您可以使用HashiCorp配置语言定义资源。 更多信息,请参阅 Terraform 文档。
请按照以下步骤删除资源组:
只有当资源组中没有资源时,才能删除该资源组。
-
从 Terraform "
main.tf
文件中删除以下代码块,即可删除资源组。 您必须使用 Terraform 文件创建了 "resourceGroup
。resource "ibm_resource_group" "resourceGroup" { name = "prod" }
有关详细信息,请参阅 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