Slide 1

Slide 1 text

Pulumiを触ってみよう 1

Slide 2

Slide 2 text

Name:ユータ Occupation:SRE X:@Y0u281 (オーでなくゼロです) ブログ:https://zenn.dev/yuta28 自己紹介 X QRコード 2

Slide 3

Slide 3 text

目次 ● IaCの課題 ● Pulumiとは ● VS Terraform & AWS CDK ● Terraformからの移行 ● まとめ 3

Slide 4

Slide 4 text

課題 Terraform ● 独自言語の学習コスト ● stateファイルの管理 ● ライセンス問題 4 AWS CDK ● AWSでしか使えない ● CI/CD基盤の構築 ● プログラミング知識が必要

Slide 5

Slide 5 text

5

Slide 6

Slide 6 text

Pulumiとは ● JS/TS、Python、Go、YAMLでIaC ● AWS以外にもK8SやDatadogなど100以上のパッケージを提供 ● 構成管理を管理してくれるマネージドなPulumi Cloud ● 他ツールから移行もサポート 6

Slide 7

Slide 7 text

VS Terraform & AWS CDK Terraform ● 独自言語の学習コスト ○ プログラミング言語可 ● stateファイルの管理 ○ デフォルトでPulumi Cloud提供 ● ライセンス問題 ○ 真のオープンソースを目指す(らし い) 7 AWS CDK ● AWSでしか使えない ○ GCPやAzureにも可能 ● CI/CD基盤の構築 ○ Pulumi Cloudが構築 ● プログラミング知識が必要 ○ YAMLファイルでも可

Slide 8

Slide 8 text

Terraformからの移行 8 resource "random_string" "s3_bucket_name" { length = 8 special = false upper = false } # Create S3 resource "aws_s3_bucket" "migration_S3" { bucket = "yuta-${random_string.s3_bucket_name.id}" } S3作成サンプルコード

Slide 9

Slide 9 text

Terraformからの移行 # pulumi convert --from terraform --language typescript {-out 出力先ディレクトリ} 9

Slide 10

Slide 10 text

Terraformからの移行 10 import * as pulumi from "@pulumi/pulumi" ; import * as aws from "@pulumi/aws" ; import * as random from "@pulumi/random" ; const s3BucketName = new random.RandomString("s3BucketName" , { length: 8, special: false, upper: false, }); // Create S3 const migrationS3 = new aws.s3.BucketV2("migrationS3" , {bucket: pulumi.interpolate`yuta-${s3BucketName.id}` });

Slide 11

Slide 11 text

まとめ 11 ● 多言語サポートやクロスプラットフォーム ● コンバートツールは良さそう ● インポートツールが欲しい

Slide 12

Slide 12 text

ありがとうございました より詳しい内容は以下のブログで↓ TerraformからPulumiへの移行方法 (https://zenn.dev/yuta28/articles/migr ation-terraform-to-pulumi) 12