0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CDK for Terraformを味見してみた。

Posted at

はじめに

普段AWS CDKとTerraformを扱っていて、どっちも一長一短な感じがしていました。CDK for Terraformなるものを見つけたので少しだけ味見してみます。

CDK for Terraformとは?

Terraform を「HCL ではなく TypeScript / Python / Go などのプログラミング言語」で書ける仕組み。
コードをコンパイルすると Terraform の JSON へ変換され、最終的に通常の Terraform と同じように terraform apply が行われます。

と生成AIが言っておりました。

前提条件

  • Nodejsをインストールしておく
  • AWS CLIをインストールしてプロファイル設定しておく

CDK for Terraformをインストール

ターミナルで以下のコマンドを実行します。

npm install -g cdktf-cli@latest

プロジェクト作成

新しいフォルダを適当に作ってcdktf initコマンドを実行します。

mkdir hello-cdktf
cd hello-cdktf
cdktf init --template=typescript --local

いろいろ聞かれるので適当に答えます。

? Project Name hello-cdktf
? Project Description A simple getting started project for cdktf.
? Do you want to start from an existing Terraform project? (y/N) n
? Do you want to crash reports to the CDKTF team? (Y/n) n
? What providers do you want to use? >AWS

以下のようなファイルが作成されます。

/cdktf-learn/
├── .gitignore
├── README.md
├── cdktf.json            #cdktfの設定ファイル
├── help
├── jest.config.js
├── main.ts               #リソースを定義するファイル
├── package-lock.json
├── package.json
├── setupJest.js
└── tsconfig.json

AWSにS3バケットをデプロイ

AWSプロバイダをインストールする

AWSのリソースを扱うために以下のコマンドで実行してAWSプロバイダをインストールします。

npm install @cdktf/provider-aws

S3バケットを実装する

main.tsを編集して以下のように記載します。

import { Construct } from "constructs";
import { App, TerraformStack } from "cdktf";
import { AwsProvider } from "@cdktf/provider-aws/lib/provider";
import { S3Bucket } from "@cdktf/provider-aws/lib/s3-bucket";

class MyStack extends TerraformStack {
  constructor(scope: Construct, id: string) {
    super(scope, id);

    // define resources here
    new AwsProvider(this, "AWS", {
      region: "ap-northeast-1",
    });

    new S3Bucket(this, "Bucket", {
      bucket: "hellofromcdktf",
    });
  }
}

const app = new App();
new MyStack(app, "hello-cdktf");
app.synth();

デプロイ

ターミナルで以下のコマンドを実行してデプロイします。

cdktf deploy

少し待つと選択肢が出るのでApproveを選びます。

>Approve
Dismiss
Stop

Apply complete!と出たらデプロイ完了です。
AWSのマネジメントコンソールからS3が作成されていることを確認できます。

リソースの削除

cdktf destroy
> Approve

また少し待つと選択肢が出るのでApproveを選びます。

>Approve
Dismiss
Stop

AWSのマネジメントコンソールからS3が削除されていることを確認できます。

まとめ

今回はCDK for Terraformを導入して少しだけ味見してみました。
これから細かい仕様を調べてみたり、AzureやGCPのリソースを作ってみたり、もう少し使い込んでみたいと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?