リソースの管理

リソースとは プロビジョニングまたは予約可能な物理的または論理的なインスタンス。リソースの例としては、ストレージ、プロセッサ、メモリ、データベース、クラスタ、VMなどがある。 、カタログから作成できるもので、リソースグループによって管理され、リソースグループ内に含まれるものです。 IBM Cloud® コンソールのリソース・リストに移動するか、コマンド・ライン・インターフェース (CLI) を使用することによって、リソースを作成および管理することができます。

IBM Cloud ID およびアクセス管理 (IAM) アクセス制御を使用して管理され、リソース・グループに属するサービスには、いくつかの利点があります。 リソースグループは場所によってスコープされないため、同じリソースグループに異なる場所のアプリやサービスを作成できます。 また、リソース・グループ内の個々のインスタンスに至るまで、きめ細かなアクセス制御を使用することもできます。

リソースの作成のために必要なアクセス権限

アカウント内のユーザーがカタログからリソースを作成し、それらをリソース・グループに割り当てることができるためには、次の 2 つのアクセス・ポリシーが割り当てられている必要があります。

  • リソース・グループ自体に対するビューアー以上の役割があるポリシー
  • アカウント内のサービスに対するエディター以上の役割があるポリシー

コンソールでのリソースの作成

コンソールでリソースを作成するには、以下のステップを使用します。

  1. ダッシュボードで、リソースの要約ウィジェット内の**「リソースの表示」**をクリックします。
  2. **「リソースの作成」**をクリックします。 ここからカタログに誘導されます。 製品を検索したり、特定のカテゴリー、プロバイダー、料金プラン、コンプライアンスの種類、リリースタイプに基づいてフィルタリングすることができます。 リソースの例としては、アプリケーション、サービス・インスタンス、コンテナー・クラスター、ストレージ・ボリューム、仮想サーバー、ソフトウェアなどがあります。

リソースを作成すると、「リソース・リスト」ページのリソースのリストに表示されます。

CLI を使用したリソースの作成

IBM Cloud® コマンド・ライン・インターフェースを使用して、リソースを作成できます。 リソースの処理について詳しくは、リソースおよびリソース・グループの処理を参照してください。

  1. ログインし、アカウントを選択します。
    ibmcloud login
    
  2. 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 を使用した新しいリソース・インスタンスの作成

以下のサンプル要求に示すように、Resource Controller API を呼び出すことによって、プログラマチックに新しいリソース・インスタンスを作成できます。 API の詳細については Resource Controller 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 Providerプラグインを設定する。 詳細については、 IBM Cloud® での Terraform の使用開始 に関するチュートリアルを参照してください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。

  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、 HashiCorp Configuration Languageを使用してリソースを定義します。 詳しくは 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 Resource Management ページの引数リファレンス詳細を参照。

  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 は、ロケーションおよびデータ・センター全体で分散アプリケーションおよびサービス・インスタンスを検索します。 Global Search and Tagging - Search API も、リソースの検索をサポートします。

検索結果の絞り込み

すべてのカタログ結果の表示
このオプションを使用して、フィルターに掛けられたカタログ検索を表示します。 最初の 5 つの結果が名前で表示されます。 説明の検索など、カタログ・エントリーの詳細検索基準が必要な場合は、このリンクをクリックして、フィルターに掛けられたカタログ結果ビューを表示できます。 このオプションは、作成するオファリングを迅速に見つけるのに役立ちます。 これは、カタログ結果と一致した場合に表示されます。 検索照会が tag: で始まる場合、このフィールドは表示されません。
サポート Case での検索
このオプションを使用して、インフラストラクチャー・リソースを含む、プラットフォーム全体のオープン・サポート Case でフィルターに掛けます。 これは、tag: によって検索した場合も含め、何か検索を実行した場合に検索の最後に表示されます。
IBM Cloud 資料内での検索
このオプションを使用して、資料をフィルターに掛けて検索します。 これは、tag: によって検索した場合も含め、検索の最後に表示されます。

スラッシュ・キー (/) を押して、カーソルを検索フィールドに移動します。

CLI を使用した検索

また、 IBM Cloud CLI を使用すると、Lucene クエリ構文を使用して、1 つのコマンドですべてのリソースを検索できます。 最も一般的に使用されるリソース属性は以下の通りです:

name
リソースのユーザー定義名。
region
リソースが作成された地理的な場所。 許可される値は、us-southus-eastau-sydeu-gbeu-dejp-tok などです。
service_name
リソースのCRNの service-name セグメントに表示されるサービス名。 ibmcloud catalog service-marketplace の出力の Name 列から許容値を得ることができる。
resource_group_id
リソースのリソースグループID。
type
リソースの CRN の resource-type セグメントに表示されるリソースタイプ。 値は所有するサービスによって異なる。 例: containers-kubernetes サービスは k8-cluster ; satellite サービスは k8-locationk8-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_DedicatedHostSoftLayer_HardwareSoftLayer_Network_Application_Delivery_ControllerSoftLayer_Network_Subnet_IpAddressSoftLayer_Network_VlanSoftLayer_Network_Vlan_FirewallSoftLayer_Virtual_Guestです。-p classic-infrastructureパラメーターを指定する必要があります。

tagReferences.tag.name および _objectType は、 -p classic-infrastructure フラグを使用している場合のみ有効です。

_objectType -p classic-infrastructureSoftLayer_Virtual_DedicatedHostSoftLayer_Network_Vlan_Firewall および SoftLayer_Virtual_Guest (クラシック・インフラストラクチャーのベアメタル・サーバーの場合のみ) に対する SoftLayer_Hardware の使用は、他の非クラシック・インフラストラクチャー・リソースと同様に検索可能になったため、非推奨になりました。

クラシック・インフラストラクチャー・リソースの検索

クラシック・インフラストラクチャー検索するには、クエリ文字列の完全一致を返すために、文字列をダブルクォーテーションで囲む必要があります。 また、ハイフン(-)を含む検索語を入力し、その文字列をダブルクォーテーションで囲まなかった場合、検索は完全一致を返しません。 文字列内のハイフンは、用語を複数の文字列に分割するために使用されます。

検索の例

以下の例は、アカウント・リソースの検索に役立ちます。 -p classic-infrastucture パラメーターが指定されていない場合、検索範囲は、_objectType SoftLayer_Network_Application_Delivery_ControllerSoftLayer_Network_Subnet_IpAddress、または SoftLayer_Hardware (ベアメタル・サーバーを除く) のクラシック・インフラストラクチャー・リソース以外のすべてのリソースになります。

  • ABC という名前のすべてのリソースを検索するには、以下のコマンドを入力します。

    ibmcloud resource search ‘name:ABC’
    
  • メッセージング・ハブのすべてのサービス・インスタンスを検索するには、次のコマンドを入力します。

    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 であるすべてのクラシック・インフラストラクチャー Virtual Server を検索するには、次のコマンドを入力します。

    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 を使用した検索

リソースを検索するには、Global Search and Tagging -Search 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. ダッシュボードから、「リソースの要約」ウィジェットで**「リソースの表示」**をクリックします。
  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 を使用したリソース・インスタンスの削除

以下のサンプル要求に示すように、Resource Controller API を呼び出すことによって、プログラマチックにリソース・インスタンスを削除できます。 API の詳細については Resource Controller 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 ファイルから以下のコード・ブロックを削除することによって、リソース・インスタンスを削除することができます。 テラフォーム・ファイルを使って 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 Resource Management ページの引数リファレンス詳細を参照。

  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