Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29

CDK for TerraformでAzureリソースをデプロイする/2023-05-15-llt29

社内のLTイベント「えるLT Vol.29 オンライン」で発表した資料です

Satoshi SAKAO

May 15, 2023
Tweet

More Decks by Satoshi SAKAO

Other Decks in Technology

Transcript

  1. 話すひと 2 🏢 インフォコム株式会社 サービスマネジメント室 👨🔧 ソフトウェアエンジニア 🛠 Node.js /

    AWS / IoT / iOS (Swift) / Linux 💖 猫,テクテクライフ(ランク: 26) Satoshi SAKAO @ottijp
  2. CDK is 何 • Cloud Development Kit • AWS製OSS •

    CloudFormationテンプレートへのトランスパイラ 4 https://speakerdeck.com/ottijp/2022-03-23-llt25
  3. CDKの位置付け 5 TypeScript | Python | Java | C# |

    Go CDK for tf HCL JSON AWS Azure GCP etc AWS CDK CloudFormation ARM CRDs Deployment Mgr Bicep Terraform Cloud Resource IaC Hi-Level IaC Bicep JSON SAM YAML JSON entity process YAML
  4. CDK for tf • DSLを新しく覚えることなく,使いなれたPG言語で 
 クロスクラウドのIaCが可能. • コード補完 •

    プロシージャルな処理 • モジュール化による複雑な構成への対応力 • まだα板で,ブレイキングチェンジが起こりうるので注意. 6 https://developer.hashicorp.com/terraform/cdktf#when-to-use-cdk-for-terraform
  5. 準備 7 $ npm install -g cdktf-cli $ cdktf init

    --template=typescript --providers=azurerm --local
  6. コードの例(一部) 9 import { Construct } from 'constructs'; import {

    App, TerraformStack } from 'cdktf'; import { AzurermProvider } from '@cdktf/provider-azurerm/lib/provider' import { ResourceGroup } from '@cdktf/provider-azurerm/lib/resource-group' import { VirtualNetwork } from '@cdktf/provider-azurerm/lib/virtual-network' import { Subnet } from '@cdktf/provider-azurerm/lib/subnet' import { NetworkInterface } from '@cdktf/provider-azurerm/lib/network-interface' import { PublicIp } from '@cdktf/provider-azurerm/lib/public-ip' import { LinuxVirtualMachine } from '@cdktf/provider-azurerm/lib/linux-virtual-machine' class AzureAppInfra extends TerraformStack { constructor(scope: Construct, name: string) { super(scope, name); new AzurermProvider(this, 'AzureRm', { features: {}, }) …
  7. 出力されるHCL(一部) 10 { "//": { "metadata": { "backend": "local", "stackName":

    "llt", "version": "0.16.1" }, "outputs": { } }, "provider": { "azurerm": [ { "features": { } } ] }, "resource": { "azurerm_linux_virtual_machine": { "web-server": { "//": { …
  8. まとめ • CDK for Terraformを利用することで 
 AWS以外のクラウドリソースのデプロイにCDKが利用できる. • CDK for

    TerraformはHCLへのトランスパイラ. • まだα版でブレイキングチェンジが起こりうるので注意. • 本当にそのプロダクトで使うべきかどうかはよく考えること. 12
  9. CDK for tfでAzureリソースをデプロイする • 環境 • terraform: v1.4.6 • cdktf:

    v0.16.1(α版) • azure-cli: 2.48.1 • 前提条件 • Node(npm)がインストールされている • Terraform CLIがインストールされている • Azure CLIがインストールされていてログインしている 14
  10. Refs • Building Azure Resources with TypeScript Using the CDK

    for Terraform • https://www.hashicorp.com/blog/building-azure-resources-with-typescript-using- the-cdk-for-terraform • CDK for Terraform | Terraform | HashiCorp Developer • https://developer.hashicorp.com/terraform/cdktf • AWSインフラのデプロイをCDKでカイゼンする/2022-03-23- llt25 - Speaker Deck • https://speakerdeck.com/ottijp/2022-03-23-llt25 15