【IaCシリーズ2】CDK for Terraform (CDKTF)
CDK for Terraform(CDKTF)は、IaCツールのTerraformを手掛けるHashicorpと、AWSが提供するAWS CDK(Cloud Development Kit)が協力して開発したツールです。双方の良い点を取り入れ、さらなるIaC活用を加速することができます。今回はそのCDK for Terraformの特徴をご紹介します。
目次[非表示]
CDKTFとは?
HashiCorpは、ここ数年間で最も人気のあるInfrastructure as Code(IaC)ツールの一つです。HCL(HashiCorp Configuration Language)と呼ばれるJSONに似た言語を使うことで、簡便さと使いやすさが多くのユーザーや顧客を引きつける主要な特徴となっています。
しかし、HCLは追加のデータ構造やプログラミング構文を提供するものの、プログラマーや開発者にとっては、それが十分に興味を引くものではなく、ある意味で他の汎用プログラミング言語が持つ広範な機能を使えない制約があるのです。
一方で、AWS CDKは最近のIaCツールの中で最も開発者に優しいものとなり、多くの人気を集めました。Python、TypeScript、JavaScript、Java、C#といった馴染みのあるプログラミング言語を使ってインフラを構築できる点が魅力ですが、唯一の欠点はAWSクラウドプラットフォームでしか使えないことです。
これまでのTerraformとAWS CDKにおける問題点は?
原則として、IaCユーザーが直面していた主な問題点は以下の通りです。
- Terraformはすべてのクラウドプラットフォームやオンプレミスに対応しているが、開発者向けには最適ではない。
- AWS CDKは開発者に優しいが、AWSクラウドでしか利用できない。
これらの問題を解決するために、HashiCorpはAWS CDKと協力してCDKTF(Cloud Development Kit for Terraform)を開発しました。2年以上にわたってこのプロジェクトが進行し、2022年8月1日にCDKTFの最初の一般利用可能(GA)バージョン0.12がリリースされ、プロダクションでの使用が可能になりました。
CDKTFがもたらすものとは?
選択したプログラミング言語でインフラを構成
開発者は、アプリケーション開発の言語や環境を変更することなく、馴染みのある構文を使ってCDKTFを使用してインフラを構成・プロビジョニングできます。これにより、インフラチームとアプリケーションチームが共同で作業でき、プロセスがこれまで以上に容易になります。CDKTFは、TypeScript、Python、C#、Java、そして新しく仲間入りしたGoといったプログラミング言語をサポートしています。
これにより、ユーザーはプログラミング言語のすべての機能や、他のソースからのデータを利用してTerraformの構成を拡張することができます。CDKTFは、バックグラウンドでTerraform構成をJSON形式に変換し、自動的に適用してインフラをプロビジョニングします。
既存のTerraformの機能を利用する
Terraformは、モジュール、データソース、バックエンドなど、これまで提供していたすべての機能を保持しています。これにより、既存のユーザーにとっては基本的な機能がそのまま維持され、使いやすくなっています。
HCLとCDKTFの相互運用性
CDKTFは、HCLからCDKTFへの移行、またはその逆の必要性にも対応しています。この機能により、Terraformの既存ユーザーがCDKTFに移行し、使用を開始する際に非常に役立ちます。
CDKTFを使い始める前に
CDKTFは、プロジェクトに選ばれる可能性が高いものの、いくつかのことを念頭に置いておく必要があります。
- HCLの知識がなく、汎用プログラミング言語を使用したい、または使用する必要がある場合。
- 再利用可能なインフラを生成できる抽象化を構成に作成したい場合。
- オープンソースであるため、商業サポートがない中で、自分でトラブルシューティングや問題解決ができる場合。
これらの点に懸念がないと感じたら、すぐにでもCDKTFを始められるでしょう。
おわりに
CDKTF (CDK for Terraform)は、インフラのプロビジョニングや管理のためにTerraformやAWS CDKを使用してきた方にとって、注目すべきものです。ぜひ取り入れてみてください!
KyriosのIaC・CI/CD導入支援サービスについての詳細は、下記をご覧ください。
本記事は、JTP Technology Portの英文記事を翻訳・再編集したものです。原文は下記をご覧ください。