クイックスタート: Terraform を使用して VM インスタンスを作成する
このクイックスタートでは、Terraform を使用して Compute Engine 仮想マシン(VM)インスタンスを作成し、その VM インスタンスに接続する方法について説明します。
Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Google Cloud 用の Terraform プロバイダ(Google Cloud プロバイダ)を使用すると、Google Cloud インフラストラクチャのプロビジョニングと管理を行えます。
始める前に
gcloud CLI と Terraform で設定済みのオンライン ターミナルを使用するには、Cloud Shell を有効にします。
このページの下部で Cloud Shell セッションが開始され、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine API:
gcloud services enable compute.googleapis.com
-
Grant roles to your user account. Run the following command once for each of the following IAM roles:
roles/compute.instanceAdmin.v1
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For examples, see Represent workforce pool users in IAM policies. - Replace
ROLE
with each individual role.
- Replace
環境を準備する
Terraform サンプルを含む GitHub リポジトリのクローンを作成します。
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
クイックスタート サンプルがあるディレクトリに移動します。
cd terraform-docs-samples/compute/quickstart/create_vm
Terraform ファイルを確認する
main.tf
ファイルを確認します。このファイルには、作成する Google Cloud リソースが定義されています。
cat main.tf
出力は次のようになります。
このファイルには、Compute Engine VM インスタンスの Terraform リソースである google_compute_instance
リソースが記述されています。google_compute_instance
は、次のプロパティを持つように構成されています。
name
はmy-vm
に設定されている。machine_type
はn1-standard-1
に設定されている。zone
はus-central1-a
に設定されている。boot_disk
は、インスタンスのブートディスクを設定します。network_interface
は、Google Cloud プロジェクトのデフォルト ネットワークを使用するように設定されています。
Compute Engine VM インスタンスを作成する
Cloud Shell で次のコマンドを実行して、Terraform が使用できることを確認します。
terraform
出力例を以下に示します。
Usage: terraform [global options] <subcommand> [args] The available commands for execution are listed below. The primary workflow commands are given first, followed by less common or more advanced commands. Main commands: init Prepare your working directory for other commands validate Check whether the configuration is valid plan Show changes required by the current configuration apply Create or update infrastructure destroy Destroy previously-created infrastructure
次のコマンドを実行して Terraform を初期化します。このコマンドは、Terraform が構成を適用できるようにワークスペースを準備します。
terraform init
出力例を以下に示します。
Initializing the backend... Initializing provider plugins... - Finding latest version of hashicorp/google... - Installing hashicorp/google v5.35.0... - Installed hashicorp/google v5.35.0 (signed by HashiCorp) Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future. Terraform has been successfully initialized!
次のコマンドを実行して、Terraform 構成を検証します。このコマンドは、次のアクションを実行します。
main.tf
の構文が正しいことを検証する。- 作成されるリソースのプレビューを表示する。
terraform plan
出力例を以下に示します。
Plan: 1 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.
構成を適用して、
main.tf
ファイルに記述されているリソースをプロビジョニングします。terraform apply
プロンプトが表示されたら、「
yes
」と入力します。Terraform が Google Cloud APIs を呼び出して、
main.tf
ファイルで定義された VM インスタンスを作成します。出力例を以下に示します。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed
VM インスタンスに接続する
次のコマンドを実行して、作成した VM インスタンスに接続します。
gcloud compute ssh --zone=us-central1-a my-vm
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、Google Cloud プロジェクトとそのリソースをまとめて削除してください。
Cloud Shell で次のコマンドを実行して、Terraform リソースを削除します。
terraform destroy
プロンプトが表示されたら、「yes
」と入力します。
出力例を以下に示します。
Destroy complete! Resources: 1 destroyed.