このページでは、ジョブを実行する各仮想マシン(VM)インスタンスを起動するために使用する永続ディスクをカスタマイズする方法について説明します。
具体的には、ブートディスクのサイズ、タイプ、VM オペレーティング システム(OS)イメージをカスタマイズできます。 VM OS イメージのみをカスタマイズする場合は、ジョブの VM OS イメージを指定するをご覧ください。
ブートディスクの詳細とブートディスクを構成する条件については、VM OS 環境の概要をご覧ください。
準備
- Batch を以前に使用したことがない場合は、Batch を使ってみるを確認し、プロジェクトとユーザーの前提条件を完了して Batch を有効にします。
- 
  
  
  
  
  
  
  
    
    
    
    
    
    
      
      
        
        
        
        
        
      
    
      
      
        
        
        
        
        
      
    
    
    
    
    
  
  ジョブの作成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。 - 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (roles/batch.jobsEditor)
- 
  
  
    
      ジョブのサービス アカウントのサービス アカウント ユーザー (roles/iam.serviceAccountUser)。これは、デフォルトでは Compute Engine のデフォルトのサービス アカウントです。
 ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。 
- 
  
  
    
      プロジェクトに対する Batch ジョブ編集者 (
カスタム ブートディスクを使用するジョブを作成して実行する
次のいずれかの方法を選択して、ジョブの作成時にカスタム ブートディスクを指定します。
- 既存のカスタム ブートディスクを指定する Compute Engine インスタンス テンプレートを使用する。 このジョブの作成時に VM インスタンス テンプレートを使用する場合や、既存のカスタム ブートディスクを使用する場合は、次の手順を完了します。 - カスタム ブートディスクを作成または特定します。 - Batch のブートディスクの要件については、このドキュメントと VM OS 環境の概要をご覧ください。ブートディスクの作成手順については、Compute Engine ドキュメントのカスタマイズしたブートディスクを作成するをご覧ください。 
- このカスタム ブートディスクを含む VM インスタンス テンプレートを作成または特定します。 - VM インスタンス テンプレートの作成手順については、Compute Engine ドキュメントのインスタンス テンプレートを作成するをご覧ください。 
- この VM インスタンス テンプレートを含むジョブを作成して実行します。 - ジョブを作成して実行する方法については、VM インスタンス テンプレートを使用したジョブリソースの定義をご覧ください。 
 
- ブートディスク フィールドを使用して、新しいカスタム ブートディスクを指定します。 次の手順で説明するように、gcloud CLI または Batch API を使用してジョブを作成および実行するときに、ブートディスク( - bootDisk)フィールドを使用して新しいカスタム ブートディスクを定義できます。- 具体的には、VM OS イメージ( - image)サブフィールド、永続ディスクの種類(- type)サブフィールド、サイズ(- sizeGb)サブフィールドを構成することで、ブートディスクをカスタマイズできます。Batch は、省略することを選択したこれらのサブフィールドにデフォルト値を設定します。
gcloud
- ジョブの構成の詳細を指定する JSON ファイルを作成します。ジョブの VM に新しいカスタム ブートディスクを指定するには、 - bootDiskフィールドとサブフィールドを含めます。- たとえば、新しいカスタム ブートディスクを使用する基本的なスクリプト ジョブを作成するには、次の内容の JSON ファイルを作成します。 - { "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}." } } ] }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "bootDisk": { "image": "VM_OS_IMAGE_URI", "type": "BOOT_DISK_TYPE", "sizeGb": BOOT_DISK_SIZE } } } ] }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }- 以下を置き換えます。 - VM_OS_IMAGE_URI: VM OS イメージの相対リソース名。以下のいずれかの方法を選択します。- Batch OS 接頭辞を指定する。 特定の Batch OS の最新のイメージを使用するには、次の形式を使用します。 - BATCH_OS_PREFIX- BATCH_OS_PREFIXは、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、- batch-debianは Batch Debian OS の接頭辞です。
- イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
 
- イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。
 
 
- BOOT_DISK_TYPE: ブートディスクのディスクタイプ(- pd-standard、- pd-balanced、- pd-ssd、- pd-extremeのいずれか)。 ブートディスクのデフォルトのディスクタイプは- pd-balancedです。
- BOOT_DISK_SIZE: 新規の永続ディスクのサイズ(GB)。この値は、ブートディスクのサイズ要件をすべて満たしている必要があります。
 
- ジョブを作成するには、次の - gcloud batch jobs submitコマンドを実行します。- gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE- 以下を置き換えます。 - JOB_NAME: このジョブの名前。
- LOCATION: このジョブのロケーション。
- JSON_CONFIGURATION_FILE: ジョブの構成の詳細を含む JSON ファイルへのパス。
 
API
Batch API を使用してジョブを作成するには、jobs.create メソッドを使用してジョブの構成の詳細を指定します。ジョブの VM OS イメージを指定するには、bootDisk フィールドとサブフィールドを含めます。たとえば、新しいカスタム ブートディスクを使用する基本的なスクリプト ジョブを作成するには、次の POST リクエストを行います。
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
    "taskGroups": [
        {
            "taskSpec": {
                "runnables": [
                    {
                        "script": {
                            "text": "echo Hello world from task ${BATCH_TASK_INDEX}."
                        }
                    }
                ]
            },
            "taskCount": 3,
            "parallelism": 1
        }
    ],
    "allocationPolicy": {
      "instances": [
        {
          "policy": {
            "bootDisk": {
              "image": "VM_OS_IMAGE_URI",
              "type": "BOOT_DISK_TYPE",
              "sizeGb": BOOT_DISK_SIZE
            }
          }
        }
      ]
    },
    "logsPolicy": {
    "destination": "CLOUD_LOGGING"
  }
}
以下を置き換えます。
- VM_OS_IMAGE_URI: VM OS イメージの相対リソース名。以下のいずれかの方法を選択します。- Batch OS 接頭辞を指定する。 特定の Batch OS の最新のイメージを使用するには、次の形式を使用します。 - BATCH_OS_PREFIX- BATCH_OS_PREFIXは、Batch VM OS イメージ接頭辞のいずれかに置き換えます。たとえば、- batch-debianは Batch Debian OS の接頭辞です。
- イメージ ファミリーを指定する。 特定のイメージ ファミリーの最新のイメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/family/IMAGE_FAMILY- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_FAMILY: イメージ ファミリー。1 つ以上の特定のイメージが含まれ、OS の種類とメジャー バージョンを表します。たとえば、Batch のすべての VM OS イメージ ファミリーを確認するには、VM OS イメージのリストを表示します。
 
- イメージのバージョンを指定する。 特定のバージョンの VM OS イメージを使用するには、次の形式を使用します。 - projects/IMAGE_PROJECT_ID/global/images/IMAGE_NAME- 以下を置き換えます。 - IMAGE_PROJECT_ID: イメージを含むプロジェクトのプロジェクト ID。たとえば、すべての Batch イメージには- batch-custom-imageを指定します。
- IMAGE_NAME: イメージ名。VM OS イメージの特定のバージョンを表します。たとえば、Batch のすべての VM OS イメージ バージョンを確認するには、VM OS イメージのリストを表示します。
 
 
- BOOT_DISK_TYPE: ブートディスクのディスクタイプ(- pd-standard、- pd-balanced、- pd-ssd、- pd-extremeのいずれか)。 ブートディスクのデフォルトのディスクタイプは- pd-balancedです。
- BOOT_DISK_SIZE: 新規の永続ディスクのサイズ(GB)。この値は、ブートディスクのサイズ要件をすべて満たしている必要があります。
次のステップ
- ジョブの作成または実行で問題が発生した場合は、トラブルシューティングをご覧ください。
- ブートディスクと VM OS イメージの詳細を確認する。
- ジョブの作成の詳細を確認する。
- ジョブとタスクを表示する方法を確認する。