ちょっとした、検証をする場合に、都度、VPCを作りたくないので、デフォルトVPCを使いたいことがよくあります。
terraformでデフォルトVPCのVPCIDを参照するには、data
を使うのが良さそうです。
コードの取得
下記のコマンドでサンプルコードを取得します。
git clone https://gitlab.com/softlab-pub/terraform/sample.git -b 20200515-0955 --depth 1
cd sample/vpc/default_vpc
簡単な説明
コードは、下記の通りで、data
を使ってデフォルトVPCの情報を取得して表示します。
terraformで、スコープがモジュール内の変数は、locals
に集めて定義すると、tfファイルの保守性が向上します。
$ cat -n main.tf
1 provider "aws" {
2 profile = "terraform"
3 region = "ap-northeast-1"
4 }
5
6 data "aws_vpc" "target_vpc" {
7 default = true
8 }
9
10 locals {
11 vpc_id = data.aws_vpc.target_vpc
12 }
13
14 output "vpc_id" {
15 value = local.vpc_id.id
16 }
使い方
初期化して変更内容を確認します。
terraform init
terraform plan
で適用される変更を確認することができます。
No changes
と出ているので何かを変更してしまうことはありません。
terraform plan
applyするとデフォルトVPCのVPCIDが表示されます。
$ terraform apply
data.aws_vpc.target_vpc: Refreshing state...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Outputs:
vpc_id = vpc-******
$
terraform output
で外部に公開する情報を確認できます。
取得できている情報は、terraform show
で確認することができます。
使い終わったら削除します。
下記の通り、変更予定の内容を表示して確認を求められます。
$ terraform destroy
data.aws_vpc.target_vpc: Refreshing state...
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
Terraform will perform the following actions:
Plan: 0 to add, 0 to change, 0 to destroy.
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
Destroy complete! Resources: 0 destroyed.
$