Closed4
Install CDK for Terraform and run a quick start demoの内容が古かったのでメモ

上記のコードの内容がちょっと古かったり、asdfを使ってる場合はひと工夫が必要だったりしたのでそれのメモ

asdfを入れてる場合はdirenvなりexportなりで環境変数を設定してあげる必要がある
もちろん asdf localなりでterraformのバージョンを指定して使える状態にしておくこと
export TERRAFORM_BINARY_NAME="$(asdf which terraform)"

quick start上のmain.goでのimportするcdktf-provider-docker-goのバージョンが古かったりするので
諸々修正が必要
バージョンは9で場所もhashicorpではなくcdktfになっている。
修正版のmain.goは下記となる。
main.go
package main
import (
"github.com/aws/constructs-go/constructs/v10"
"github.com/aws/jsii-runtime-go"
"github.com/hashicorp/terraform-cdk-go/cdktf"
"github.com/cdktf/cdktf-provider-docker-go/docker/v9/container"
"github.com/cdktf/cdktf-provider-docker-go/docker/v9/image"
dockerprovider "github.com/cdktf/cdktf-provider-docker-go/docker/v9/provider"
)
func NewMyStack(scope constructs.Construct, id string) cdktf.TerraformStack {
stack := cdktf.NewTerraformStack(scope, &id)
dockerprovider.NewDockerProvider(stack, jsii.String("docker"), &dockerprovider.DockerProviderConfig{})
dockerImage := image.NewImage(stack, jsii.String("nginxImage"), &image.ImageConfig{
Name: jsii.String("nginx:latest"),
KeepLocally: jsii.Bool(false),
})
container.NewContainer(stack, jsii.String("nginxContainer"), &container.ContainerConfig{
Image: dockerImage.Name(),
Name: jsii.String("tutorial"),
Ports: &[]*container.ContainerPorts{{
Internal: jsii.Number(80), External: jsii.Number(8000),
}},
})
return stack
}
func main() {
app := cdktf.NewApp(nil)
NewMyStack(app, "learn-cdktf-docker")
app.Synth()
}

他細かい手順は特に変わりなし。
このスクラップは2024/01/19にクローズされました