BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース CDK for TerraformがGoのサポートを追加、アセット構築を強化

CDK for TerraformがGoのサポートを追加、アセット構築を強化

原文(投稿日:2021/06/02)へのリンク

Hashicorpは先頃、CDK for Terraformのバージョン0.4をリリースした。今回のリリースには、TerraformコンフィギュレーションをGoを使って記述する試験的サポートが加えられている。Terraformモジュールとアセット構築のサポートも強化された。

CDKは、TerraformコンフィギュレーションをC#、Python、TypeScript、Javaなど、さまざまなプログラミング言語で記述可能にするもので、既存のTerraformプロバイダモジュールをすべてサポートする。

最新のリリースでは、その基盤として言語バインディングの生成に使用されているjsiiライブラリに、Goの試験的サポートが追加された。これによってHashicorpチームは、CDKを拡張して、Goのサポートを導入することが可能になったのだ。例えばAWS EC2インスタンスは、GoのCDKを使って次のように宣言することができる。

func CreateStack(scope constructs.Construct, id string) cdktf.TerraformStack {
  stack := cdktf.NewTerraformStack(scope, &id)

  aws.NewAwsProvider(stack, jsii.String("aws"), &aws.AwsProviderConfig{
    Region: jsii.String("us-east-1"),
  })

  aws.NewInstance(stack, jsii.String("Hello"), &aws.InstanceConfig{
    Ami:          jsii.String("ami-2757f631"),
    InstanceType: jsii.String("t2.micro"),
    Tags: &map[string]*string{
      "environment": jsii.String("development"),
    },
  })

  return stack
}

cdktf synthを実行すると、次のような出力が生成される。

{
  "terraform": {
    "required_providers": {
      "aws": {
        "version": "~> 3.40.0",
        "source": "hashicorp/aws"
      }
    }
  },
  "provider": {
    "aws": [
      {
        "region": "us-east-1"
      }
    ]
  },
  "resource": {
    "aws_instance": {
      "Hello": {
        "ami": "ami-2757f631",
        "instance_type": "t2.micro",
        "tags": {
          "environment": "development"
        }
      }
    }
  }
}

生成されたTerraformは、通常のterraformコマンドを使って、あるいはcdktrf deployによってCDK経由で、デプロイすることが可能である。ただし、Goのサポートは試験レベルであり、運用中のワークロードに使用するべきではない、とチームは注意を促している。また、現在のAWSプロバイダは、処理の実行におよそ6GBのメモリが必要である。

新しいアセットコンストラクトでは、プロビジョニングされたリソースと合わせてデプロイする必要のあるファイルやフォルダ参照が簡略化されている。推奨されるユースケースは、静的ローカルファイルのデプロイや、生成されたzipファイルをLambda関数用にコピーする場合などだ。このTypeScriptの例では、Lambda関数のコードパッケージが配置されたディレクトリを参照するアセットが生成される。

const asset = new TerraformAsset(this, "lambda-asset", {
  path: path.resolve(__dirname, "../lambda"),
  type: AssetType.ARCHIVE,
});

ビルド済(pre-build)プロバイダがPsPI、NPM、Nuget、Maven Centralなど、言語ネイティブなリポジトリにパブリッシュされるようになった。対応可能なプロバイダの全リストは、GitHubリポジトリで確認できる。terraformリポジトリにホストされているプロバイダやモジュールにcdktf.jsonを追加することで、cdktf getを実行すればプロジェクトに直接インポートできるようになった。他のモジュールにはTerraformHclModuleが使用可能だが、入力と出力はタイプセーフではない。

リリースの内容に関するより詳しい情報はchangelogに記載されている。Hashicorpではcommunity office hoursディスカッションフォーラムを設けて、質問を受け付けている。始めてCDKを使うユーザには、CDK for Terraform Learn Guideがお勧めだ。

この記事に星をつける

おすすめ度
スタイル

BT