コンソールからダウンロードした Terraform を使用して基盤をデプロイする

企業の管理者は、Google Cloud コンソールで Cloud 基盤の設定ガイドのガイド付きインターフェースを使用して、エンタープライズ向けの Google Cloud 基盤を構成できます。この構成は、Google Cloud コンソールから直接デプロイすることも、Terraform としてダウンロードすることもできます。

管理者は、組織のエンティティ、ユーザー、グループを構成して、請求先アカウントをリンクまたは設定し、リソース(フォルダとプロジェクト)の階層、IAM ポリシー、初期ネットワーキング、一元管理されたロギングとモニタリングを構成できます。

構成を Terraform としてダウンロードすると、後でデプロイに使用する Terraform ファイルが生成されます。このチュートリアルでは、ダウンロードした Terraform ファイルをデプロイする手順を説明します。また、以前にデプロイしたインフラストラクチャ リソースについても説明します。

始める前に

Terraform の使用に関するベスト プラクティスを確認してください。ここには、Terraform を使用してチームメンバーやワークストリーム全体で効率的な開発を行うためのガイドラインが記載されています。

コンソールの [デプロイ] ボタンをクリックして基盤構成をすでにデプロイしていて、独自のパイプラインを使用して、ダウンロードした Terraform 構成をデプロイする場合は、次のことを行う必要があります。

  • コンソールで生成された Terraform 状態ファイルをダウンロードします。
  • ダウンロードした状態ファイルを独自のパイプライン プロセスに含めます。

詳細については、コンソールからデプロイした後にダウンロードした Terraform をデプロイするをご覧ください。

Cloud Shell を使用して Terraform をデプロイする

Cloud Shell には Terraform がプリインストールされ、認証済みであるため、すぐに使用できます。

  1. コンソール内の設定ガイドで [Terraform としてダウンロード] をクリックし、構成を保存します。
  2. Cloud Shell を開きます。
  3. Cloud Shell で、ディレクトリを作成してそのディレクトリに移動します。

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. ステップ 1 でダウンロードした Terraform 構成をアップロードします。

    Cloud Shell の [さらに表示] メニューから [アップロード] を選択し、[ファイル選択] をクリックして Terraform 構成を選択します。前のステップで作成したフォルダをインストール先のディレクトリに設定し、[アップロード] をクリックします。

  5. cloud-foundation-example ディレクトリを開いていることを確認します。

  6. Terraform リモート状態を保存する Cloud Storage バケットを作成します。リモート状態を使用すると、Terraform は Cloud Storage などのオブジェクト ストアに Terraform で管理するインフラストラクチャの状態情報を格納できます。この構成には、チームの委任や状態のロックなどのメリットがあります。

    Cloud Storage バケットを作成するには、次のコマンドを実行します。

    gsutil mb gs://tf-state-PROJECT_ID
    
  7. backend.tf ファイルで Terraform バックエンド構成を定義します。PROJECT_ID は、前のステップで使用したプロジェクト ID と一致するように置き換えます。詳細については、Cloud Storage に Terraform の状態を保存するをご覧ください。

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. terraform init を実行します。このプロセスにより、Terraform 構成ファイルとバックエンドを含む作業ディレクトリが初期化されます。

  9. terraform plan を実行して、Terraform によって作成されるリソースを確認します。出力例:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. terraform apply を実行して構成を適用します。これにより、リソースが Google Cloud にデプロイされます。プロンプトが表示されたら「yes」と入力します。

  11. Google Cloud コンソールに移動して、リソースがアカウントまたはプロジェクトにデプロイされていることを確認します。

Cloud Shell を使用して Terraform を再デプロイする

Terraform は、デプロイされたリソースに関する情報を Terraform 状態ファイルに保存します。前のステップで構成をデプロイした場合は、同じバックエンドを再利用して、新しくエクスポートした構成によって定義されたリソースが、自動的に検出、プルーニング、更新されるようにすることを強くおすすめします。

  1. コンソール内の設定ガイドで [Terraform としてダウンロード] をクリックし、構成を保存します。
  2. Cloud Shell を開きます。
  3. Cloud Shell で、新しいディレクトリを作成してそのディレクトリに移動します。
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. ステップ 1 でダウンロードした Terraform 構成をアップロードします。

    Cloud Shell の [さらに表示] メニューから [アップロード] を選択し、[ファイル選択] をクリックして Terraform 構成を選択します。前のステップで作成したフォルダをインストール先のディレクトリに設定し、[アップロード] をクリックします。

  5. cloud-foundation-example-redeploy ディレクトリを開いていることを確認します。

  6. 前に作成した Cloud Storage バックエンド バケットと状態ファイルが存在していることを確認します。

    gsutil ls gs://tf-state-PROJECT_ID/terraform/state/
    
    出力例:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. 同じバケットと接頭辞を再利用して、backend.tf ファイル内に Terraform バックエンド構成を定義します。

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. terraform init を実行します。このプロセスにより、Terraform 構成ファイルとバックエンドを含む作業ディレクトリが初期化されます。

  9. terraform plan を実行して、Terraform が作成、変更、または破棄するリソースを確認します。出力例:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. terraform apply を実行して構成を適用します。これにより、リソースが Google Cloud にデプロイされます。プロンプトが表示されたら「yes」と入力します。

  11. Google Cloud コンソールに移動して、リソースがアカウントまたはプロジェクトにデプロイされていることを確認します。

コンソールからデプロイした後に、ダウンロードした Terraform をデプロイする

コンソールの [デプロイ] ボタンを使用して基盤構成をすでにデプロイしている場合は、Terraform の状態ファイルが生成されています。独自のパイプラインを使用してデプロイするために Terraform 構成をダウンロードする場合は、コンソールのデプロイ時に生成された Terraform 状態ファイルを含める必要があります。

状態ファイルをダウンロードして使用するには:

  1. Terraform 状態ファイルをダウンロードするには、Terraform 状態ファイルを管理するの手順を完了します。

    1. デプロイメントをロックします
    2. 状態ファイルをダウンロードします
    3. デプロイメントのロックを解除します
  2. ダウンロードした状態ファイルを Cloud Storage バケットに移動するには、Terraform の状態を Cloud Storage バケットに保存するをご覧ください。

  3. Terraform 構成を再デプロイするには、Cloud Shell で Terraform を再デプロイするをご覧ください。

Terraform デプロイのトラブルシューティング

既存のリソースを使用して Terraform をデプロイする

ダウンロードした Terraform 構成がすでに存在するリソースを作成しようとすると、Terraform は 409 エラーコードで終了します。これらのエラーを解決するには、Google Cloud コンソールまたは gcloud CLI を使用してリソースを削除し、Terraform 構成を再適用します。また、これらのリソースが重要であり削除できない場合は、Terraform の状態にリソースをインポートできます。

Terraform、Cloud Build、GitOps でインフラストラクチャをコードとして管理する

詳しい手順については、チュートリアルをご覧ください。これは、インフラストラクチャの変更を予測的かつ繰り返し行うための戦略を検討しているプラットフォーム管理者とオペレーター向けのオプションです。このガイドは、Google Cloud、Linux、GitHub に精通していることを前提としています。このオプションの大まかな手順は次のとおりです。

  1. GitHub リポジトリを設定します。
  2. Cloud Storage バケットに状態を保存するように Terraform を構成します。
  3. Cloud Build サービス アカウントに権限を付与します。
  4. Cloud Build を GitHub リポジトリに接続します。
  5. 機能ブランチで環境構成を変更します。
  6. 開発環境への変更を促進します。
  7. 本番環境への変更を促進します。