このページで説明する内容は次のとおりです。
デプロイと個々のリビジョンの詳細とログを検査する方法。
Terraform 構成のデプロイ時に発生する可能性がある一般的なエラーのトラブルシューティング方法。
デプロイの詳細とログを検査する
デプロイと個々のリビジョンの詳細とログを調べることができます。
デプロイの状態を検査する
各デプロイには、現在のステータス、エラーコード、障害の原因に関する詳細情報が含まれます。
エラーが発生した場合は、まずデプロイの状態を表示します。
リビジョンの状態を検査する
デプロイがエラーコード REVISION_FAILED
で失敗した場合は、リビジョンの状態を確認できます。
リビジョンの状態の出力で、stateDetail
フィールドと errorCode
フィールドを確認します。
リビジョンの状態には、デプロイメントと同じ情報が含まれます。また、ビルド ID も含まれます。
Cloud Build のログを検査する
リビジョンの状態を表示し、リビジョンで使用される Cloud Build のビルド ID を取得します。
ビルド ID を使用して Cloud Build ログを調べます。ビルド結果の検査の詳細については、ビルド結果を表示するをご覧ください。
一般的なエラー
このセクションでは、Infra Manager を使用して Terraform 構成をデプロイする際に発生する可能性のある一般的なエラーについて説明します。
デプロイに失敗しました
デプロイの状態が FAILED
の場合、デプロイで予期しないエラーが発生しています。
デプロイの状態を表示し、stateDetail
フィールドと errorCode
フィールドを調べて詳細を確認します。
デプロイがエラーコード REVISION_FAILED
で失敗した場合は、リビジョンの状態を検査できます。
構成エラー
デプロイの状態が FAILED
の場合、Terraform 構成の構成エラーが原因で失敗している可能性があります。
デプロイ エラーが構成に関連している場合、デプロイの状態の出力に tfErrors
フィールドと errorLogs
フィールドが含まれます。構成エラーの例としては、無効な構成や権限がないなどがあります。
Terraform からエラーを表示します。デプロイの状態の出力で、次の操作を行います。
tfErrors
は、Terraform で発生したエラーの概要です(このリストのエラーは Infra Manager によって 10 件に制限されています)。errorLogs
は、アーティファクト バケット内の Cloud Storage オブジェクトを参照します。このバケットには、改行区切りの JSON 形式ですべてのtfErrors
が含まれています。
各 tfError
には、リソースのアドレスと、errorDescription
フィールドに人が読める形式のエラーの説明があります。 Google Cloud API から返された HTTP エラーコードが原因でリソースが失敗した場合、httpResponseCode
フィールドにも値が入力されます。その他の API 障害情報は、エラー フィールドに記録されます。
サービス アカウントに構成を取得するための権限がない
次のエラーが表示されます。
error downloading 'GCS_LOCATION': googleapi: Error 403: SA_EMAIL does
not have storage.objects.list access to the Google Cloud Storage bucket.
このエラーは、Infra Manager に Cloud Storage バケットから Terraform 構成を取得する権限がないため発生します。
この問題に対処するには、サービス アカウントに storage.objectViewer
ロールを付与します。サービス アカウントに権限を付与する方法については、サービス アカウントを構成するをご覧ください。
構成を取得する場所が正しくない
次のエラーが表示されます。
`blueprint fetch failed: invalid path`
このエラーは、Terraform 構成を取得するために無効なロケーションが指定されている場合に表示されます。Infrastructure Manager では、Terraform 構成を「ブループリント」という用語で参照します。
このエラーに対処するには、Terraform 構成の場所を確認し、コマンドで場所の形式が正しいことを確認します。
リソースをアクチュエートするための権限が正しくない
エラーは通常、tfErrors
の下にあり、デプロイできなかったリソースの 403
レスポンス コードが含まれています。
このエラーは、Terraform 構成で定義されたリソースの作成、読み取り、更新、削除を行う権限がサービス アカウントにない場合に表示されます。
このエラーに対処するには、サービス アカウントに IAM 権限を付与するをご覧ください。
バックエンドを使用した構成
次のエラーが表示されます。
`blueprint invalid: found backend config in file.tf`
このエラーは、Terraform 構成にバックエンド ブロックがある場合に表示されます。Infrastructure Manager がバックエンドを管理するため、Terraform 構成でバックエンド ブロックを定義することはできません。
このエラーに対処するには、構成からバックエンド ブロックを削除します。
Cloud Build リポジトリの構成を検証する
Infra Manager が Git リポジトリにアクセスできない場合(プライベート Git リポジトリまたは Cloud Build 自動ワークフローを使用)、Cloud Build リポジトリが正しく構成されていることを確認する必要があります。
限定公開リポジトリへのアクセスを提供するように Cloud Build リポジトリが構成されていることを確認するには、GitHub リポジトリに接続するをご覧ください。
Infrastructure Manager は、Cloud Build リポジトリの URL が Terraform 構成(--git-source-repo
で参照)と一致し、読み取り専用トークンを生成できる最初の接続を使用します。リポジトリ接続は、選択した Cloud Build リポジトリで accessReadToken API を呼び出すことによって直接検証されます。
Infra Manager サービス アカウントを使用して次のコマンドを実行し、権限が正しいことを確認します。
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token \
--impersonate-service-account=SERVICE_ACCOUNT)" \
"https://cloudbuild.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/connections/CB_CONNECTION/repositories/CB_REPO:accessReadToken"
次のステップ
- Google Cloudで Terraform を使用する方法の詳細を確認する。
- デプロイメントを更新する。
- デプロイの状態を表示する。
- デプロイされたリソースを表示する。
- デプロイメントを削除する。