IBM Cloud Docs
管理资源组

管理资源组

资源组是一种自定义分组管理账户资源的方式,您可以快速为多个资源同时分配用户访问权限。 使用 IBM Cloud® Identity and Access Management (IAM) 访问控制来管理的任何帐户资源都属于您帐户中的资源组。 您可以对资源进行分组,并分配对使用 IAM 的个别服务实例或整个资源组的访问权。

要开始管理您的资源组,请在 IBM Cloud® 控制台中依次选择 “管理” > “账户”> “账户资源”> “资源组”。 您可以创建、查看和重命名资源组,添加资源以及管理对资源组的访问权。 您还可以删除任何资源组,前提是该资源组不包含任何资源,并且不是缺省资源组。 IBM Cloud 帐户所有者可以向任何资源组添加资源,但必须使用 IAM 访问策略向其他用户授予访问权。

如需了解与资源组合作的更多信息,请参阅 《组织资源和分配访问权限的最佳实践 》。

创建资源组

如果您拥有现收现付或预订帐户,那么可以创建多个资源组,从而轻松地管理配额和查看一组资源的计费使用情况。 您还可以对资源进行分组,从而更轻松地为用户一次性分配对多个实例的访问权。 每个账户最多可拥有 1000 个资源组。 您必须分配有具有所有帐户管理服务的“管理员”角色的 IAM 策略,才能创建更多资源组。 如果您拥有轻量帐户或 30 天试用帐户,那么不能创建额外的资源组,但可以重命名缺省资源组。

在控制台中创建资源组

  1. 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组
  2. 单击创建
  3. 输入资源组的名称。
  4. 单击创建

使用 CLI 创建资源组

您可以使用IBM Cloud®创建和重命名资源组,或查看其中的资源。命令行界面查看资源。 有关使用资源的详细信息,请参阅 使用资源和资源组

  1. 登录并选择帐户。
    ibmcloud login
    
  2. 运行 "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 创建资源组的步骤如下:

  1. 在 "main.tf 文件中创建一个参数。 下面的示例使用“ibm_resource_group 资源创建了一个资源组,其中”name 是标识资源组的唯一名称。

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    您可以指定与资源组实例相关联的 "tags。 有关详细信息,请参阅 Terraform 资源管理页面上的参数参考详情。

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

    terraform init
    
  3. 提供 "main.tf 文件中的资源。 如需了解更多信息,请参阅 使用 Terraform 配置基础架构

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

重命名资源组

已为您创建第一个资源组并命名为 Default。 您可以更新此组的名称或您所创建的任何其他组的名称。

在控制台中重命名资源组

  1. 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组
  2. 单击 "操作 列表 "图标 菜单,然后选择 "重命名"。
  3. 输入唯一名称,然后单击保存

使用 CLI 重命名资源组

  1. 登录并选择帐户。
    ibmcloud login
    
  2. 运行 "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 重新命名资源组。

  1. 要安装 Terraform CLI 并为 Terraform 配置IBM Cloud上的 Terraform 入门教程。提供商插件,请参考 IBM Cloud®上的 Terraform 入门 教程。 该插件抽象了用于完成此任务的IBM CloudAPI。用于完成此任务的 API。

  2. 创建一个名为 main.tf 的Terraform配置文件。 在此文件中,您可以使用HashiCorp配置语言添加重命名资源组的配置。 更多信息,请参阅 Terraform 文档

    在下面的示例中,您可以使用新值更新 "name,重新命名资源组。

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    有关详细信息,请参阅 Terraform 资源管理页面上的参数参考详情。

  3. 初始化 Terraform CLI。

    terraform init
    
  4. 运行 "terraform plan 生成 Terraform 执行计划,以预览建议的操作。 Terraform 执行计划汇总了重命名资源组所需运行的所有操作。

    terraform plan
    
  5. 重命名资源组。

    terraform apply
    

向资源组添加资源

使用 IAM 管理的服务属于一个资源组。 在目录中创建其中一个服务的实例时,系统会提示您将该实例分配给资源组。 因此在将资源分配给资源组之前,务必对帐户中资源的分组方式进行规划。 创建实例时选择的资源组是最终选择,无法更改。

创建实例时选择的资源组是最终选择,无法更改。

IBM Cloud 帐户所有者可以向任何资源组添加资源,但必须使用 IAM 访问策略向其他用户授予访问权。 帐户中的用户必须分配有两种访问策略,才能通过目录创建资源并将其添加到资源组:

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

要将资源添加到资源组,请完成以下步骤:

  1. 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组
  2. 单击 "操作 列表 "图标 菜单,然后选择 "添加资源"。
  3. 从这里,您可以进入目录。 您可以搜索产品,或根据特定类别、提供商、定价计划、合规类型或发布类型进行筛选。 资源的例子包括应用程序、服务实例、容器群集、存储卷、虚拟服务器和软件。

使用 API 将资源添加到资源组中

请参阅 管理目录设置,设置IBM Cloud®目录的可见性,并控制账户中用户对公共目录和私有目录中产品的访问。

查看资源组中的资源

要轻松查看分配给资源组的资源,请转到导航菜单图标导航菜单图标 > 资源列表。 然后,按资源组进行筛选。

如果在“资源列表”页面上找不到经典基础架构资源,请单击“导航菜单”图标导航菜单 "图标>经典基础架构>“设备列表”检查“设备列表”。

使用 CLI 查看资源组中的资源

  1. 登录并选择帐户。

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

使用控制台删除资源组

不能删除添加到帐户的缺省资源组。 除了默认的资源组,只有当资源组不包含任何资源时,才能将其删除。

要删除不包含资源且不是默认资源的资源组,请完成以下步骤:

  1. 在IBM Cloud控制台中,转到管理>账户>账户资源>资源组
  2. 单击操作图标操作图标>删除

使用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 文档

请按照以下步骤删除资源组:

只有当资源组中没有资源时,才能删除该资源组。

  1. 从 Terraform "main.tf 文件中删除以下代码块,即可删除资源组。 您必须使用 Terraform 文件创建了 "resourceGroup

    resource "ibm_resource_group" "resourceGroup" {
     name     = "prod"
    }
    

    有关详细信息,请参阅 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