IBM Cloud Docs
リソースの作成

リソースの作成

リソース プロビジョニングまたは予約可能な物理的または論理的なインスタンス。 リソースの例としては、ストレージ、プロセッサ、メモリ、データベース、クラスタ、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 プロバイダー・プラグインを構成します。 詳しくは、 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 Resource Managementページの引数リファレンスの詳細を参照してください。

  2. 構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳しくは、 作業ディレクトリーの初期化を参照してください。

    terraform init
    
  3. main.tf ファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。

    1. terraform plan を実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。

      terraform plan
      
    2. terraform apply を実行して、計画に定義されているリソースを作成します。

      terraform apply