Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2023-12-18 SRETT8 Terraform使いがPulumiに入門する
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
SUZUKI Masashi
December 18, 2023
Technology
2.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2023-12-18 SRETT8 Terraform使いがPulumiに入門する
SUZUKI Masashi
December 18, 2023
More Decks by SUZUKI Masashi
See All by SUZUKI Masashi
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
1
690
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
820
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
2
350
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
2
890
2026-07-28 3-shakeテックランチ Cloud Run のデプロイパラメータを考える / Cloud Run Deploy Parameter
masasuzu
0
130
2026-07-24 tfpolicyを試してみたのですが、、、、
masasuzu
1
190
2026-06-18 ecspressoのtfstate参照が便利すぎた話
masasuzu
1
560
2026-04-14 Jagu'e'r Cloud Native分科会 Terraform Stateにおけるシークレットの平文保存という課題とその解決
masasuzu
1
110
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
1
540
Other Decks in Technology
See All in Technology
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
300
CTO Night|NotionのAIエージェントとFDE
kzkhykw1991
0
240
AI × アーキテクト 第1・2章|生成AIの課題とアーキテクトの素養
daidaidai
0
190
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
140
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
160
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
300
会社説明資料
persolserverworks
0
9.8k
古い指輪から広がった JAVA コミュニティ とのつながり
yamad
0
130
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
How to Design Configuration for Rails Applications
willnet
1
850
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
280
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
290
Featured
See All Featured
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
520
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
GitHub's CSS Performance
jonrohan
1033
470k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Transcript
3-shake SRE Tech Talk #8 Terraform使いがPulumiに入門する
© 2022 3-shake Inc. 2 自己紹介 • 所属 ◦ 株式会社スリーシェイク
Sreake 事業部 2022/6入社 ◦ AWS上で動くサービスのインフラ構築 /運用支援が主 • Skills ◦ AWS ▪ ほんのちょっとだけわかる ◦ Google Cloud ▪ 最近ほんのちょっとだけわかるようになりました ◦ Terraform ▪ 最近書くコードの9割はHCL すずきまさし (@masasuz)
3-shake SRE Tech Talk #8 Terraform使いがPulumiに入門する
© 2022 3-shake Inc. 4 前提 • 普段はAWSをメインに触っている • 普段はTerraformをメインで使ってる
• Pulumiはプロダクションでは使ってない。 ◦ むしろ触り始め ◦ ちゃんとわかっていない
© 2022 3-shake Inc. 5 今回語らないこと • そもそもIaCとは ◦ 概要、特徴、メリット・デメリット
• そもそもTerraformとは ◦ 概要、特徴、メリット・デメリット、操作方法
© 2022 3-shake Inc. 6 モチベーション • Terraform(HCL)の記述力に限界を感じていた ◦ 足りない関数
◦ 二重ループのための Module使用 ◦ 分岐処理のためのcountと三項演算子 • (とはいえ、記述力が低いからこそ複雑なことを抑制できて可読性が上がっている面もある ) • 他の選択肢 ◦ CDKはAWSに限定される ◦ CDKTFは結局terraformに依存する ▪ これ自体は悪いことではない ▪ でもどうせならterraformの世界から離れたものを調べたかった そこでなにか良いものがないかと思い当たったところに Pulumiがあって興味が出たので調べてみよう
© 2022 3-shake Inc. 7 Pulumiとは Pulumiはプログラミング言語でインフラを構築可能なプロビジョニングツールです。 Terraformと同じようにProviderを通して複数のクラウドに対応しています。 TerraformはHCLという宣言的言語を使用するのに対し、 Pulumiは汎用的なプログラミング言語を使用して
インフラリソースを定義します。 参考: Pulumi - Infrastructure as Code in Any Programming Language
© 2022 3-shake Inc. 8 • TypeScript & JavaScript (Node.js)
• Python • Go • C#, VB, F# (.NET) • Java • Pulumi YAML 参考: Pulumi Languages & SDKs | Pulumi Docs Pulumi対応言語
© 2022 3-shake Inc. 9 Pulumiのアーキテクチャ • Language host ◦
インフラリソースの定義を Program (後述)として好きな言 語で定義します。 • Deployment Engine ◦ 希望する状態に変更するための操作セットを実行する役割 を果たします。 • Resource Provider ◦ クラウドサービスとの通信を処理して、 Programで定義したリソースの変更処理を行います。 参考: How Pulumi Works | Pulumi Docs
© 2022 3-shake Inc. 10 • Project ◦ Programのソースコードとメタデータ (Programの実行方法)を格納し
たディレクトリ • Program ◦ インフラのあるべき姿を定義したもの • Resource ◦ インフラを構成するオブジェクト。 ResourceのプロバティはOutputと して他のResourceのInputに使用することができます • Stack ◦ Programを実行すると作成されるインスタンス。同一の Programか ら開発、ステージング、本番環境の Stackを個別に作成することが できます。 参考: What is Pulumi? | Pulumi Docs Pulumiのコンポーネント
© 2022 3-shake Inc. 11 Terraform Cloudのようなものと考えていただいて良いです。 デプロイの状態、履歴やシークレットを管理して、CI/CDやGitHubと連携してデプロイを実行することもできます。 Pulumi CLIはバックエンドを明示的に指定しない限りはでデフォルトでPulumi
Cloudを使用します。 Terraformはデフォルトでlocalバックエンドを使用します。 Pulumi Cloud
© 2022 3-shake Inc. 12 個人で使う限りは無料で使用することができます。 ※2023/12/18現在 Pulumi Cloud 料金
© 2022 3-shake Inc. 13 デフォルトではPulumi CloudにStateを保存します。 そのためにまずログインします。以下のコマンドを実行するとブラウザが起動するので、ログイン処理をします。 Pulumi CLoudを使わず、ローカルにstateを保存したい場合は以下のとおりです。
Pulumi Cloudへログイン
© 2022 3-shake Inc. 14 pulumi new コマンドで新しいProjectを作成できます。同時にStackも作成されます。引数にテンプレートを指定できます。 ウィザード形式で設定をすることができます。 以下の例は
awsプロバイダーを使用して、言語はTypeScriptを使用するテンプレートとなります。 Projectの作成
© 2022 3-shake Inc. 15 ディレクトリ内にはPulumi実行に必要な 各種ファイルが生成されます。 ここで見るべきは以下の 3ファイルです。 •
Pulumi.yaml ◦ プロジェクト設定 • Pulumi.dev.yaml ◦ Stack(dev)設定 • index.ts ◦ リソース定義 Projectの作成 cont.
© 2022 3-shake Inc. 16 plumi preview コマンドでStackの変更差分を確認できます。 terraform plan
を似ていますが、こちら差分の詳細は表示されませ ん。 リソース変更を確認
© 2022 3-shake Inc. 17 pulumi up コマンドでStackをデプロイできます。 terraform plan
と terraform apply を組み合わせた挙動になります。 実行すると選択肢が出ます。 Stackデプロイ
© 2022 3-shake Inc. 18 details を選択すると変更差分の詳細が表示されます。 Stackデプロイcont.
© 2022 3-shake Inc. 19 yesを選択すると、変更が適用されます。 Stackデプロイcont.
© 2022 3-shake Inc. 20 pulumi destroy でStackを削除できます。 pulumi up
と同じようにdetailsで詳細表示、 yes で削除実行ができます リソース削除
© 2022 3-shake Inc. 21 Stateを操作するコマンドは以下のとおりです。 • StackのState出力(terraform state pull
) ◦ pulumi stack export • State インポート(terraform import) ◦ pulumi import <TYPE> <NAME> <ID> • State 削除(terraform state rm) ◦ pulumi state delete <URN> State操作
© 2022 3-shake Inc. 22 Terraformからの移行オプションは以下の通りとなります。 1. terraformとPulumiを共存する ◦ Pulumiからtfstateを参照する
2. tfstateからリソースをPulumiへインポートする 3. TerraformのコードをPulumiのコードに変換する 参考: Adopting Pulumi | Pulumi Docs 参考: Migrating from Terraform | Pulumi Docs Terraformからの移行
© 2022 3-shake Inc. 23 TerraformとPulumiを共存 以下のようなコードで localのtfstateが参照できるので、 terraformの値を参照して利用することができます。 networkリソースに関しては既存の
terraformを使いつつ、その outputをPulumiで使うイメージになります。 Terraform からの移行cont.
© 2022 3-shake Inc. 24 tfstateからインポート pulumi import --from terraform
./terraform.tfstate のようにすることによって tfstateからリソースをインポートするこ とができます。 terraformからコード変換 pulumi convert --from terraform コマンドを使用することで、既存の TerraformのコードをPulumiのコードに変換することがで きます。 ただし、変換できないコードは TODOコメントが付きます。 90%~95%は変換が対応しているとのこと。 Terraform からの移行cont.
© 2022 3-shake Inc. 25 Pulumiの概要と基本操作を Terraformと対比しながら説明してきました。 • 新規プロジェクトである程度複雑な処理をしたい。 •
プログラミング言語に精通している人がメンバーにいる。 そういった場合には Pulumiは良さそうに思えます。 しかしながら、ある程度 Terraformで出来上がっているプロジェクトを Pulumiに移行するのはそれなりに大変 なので、プロジェクトの規模感とコストに見合うかを考えて導入するか考えると良いでしょう。 自分自身まだまだ使いこなせていないですし、追いきれてない Pulumiのトピックもあるので、今後も選択肢 の一つとして調べていきたいところです。 まとめ