CDK for TerraformをつかってTypeScriptでインフラ定義ができるようになったのでやってみた。
CDK for Terraform: Enabling Python & TypeScript Support
cdktf-cliのインストール
sudo npm install -g cdktf-cli
(macOSのひとはsudoいらないです)
initする
cdktf init --template=typescript
main.tfを書く
import { Construct } from 'constructs';
import { App, TerraformStack, Token } from 'cdktf';
import {AwsProvider} from "./.gen/providers/aws";
import {Vpc} from "./.gen/providers/aws/vpc";
import {Subnet} from "./.gen/providers/aws/subnet";
class MyStack extends TerraformStack {
constructor(scope: Construct, name: string) {
super(scope, name);
new AwsProvider(this, 'aws', {
region: 'us-east-1'
});
const vpc = new Vpc(this, 'my-vpc', {
cidrBlock: '10.0.0.0/16'
});
new Subnet(this, 'my-subnet', {
vpcId: Token.asString(vpc.id),
cidrBlock: '10.0.0.0/24'
});
}
}
const app = new App();
new MyStack(app, 'vpc-example');
app.synth();
cdktf synthでTerraformのコードを生成する
cdktf synth
これを実行すると、cdktf.out
にTerraformのJSONコードが出力される。
素のterraformで実行する
移動
cd cdktf.out
terraform実行
terraform apply
CDKTFで実行する
cdktf deploy
リソースを削除する
cdktf destroy