Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
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.7k
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-06-18 ecspressoのtfstate参照が便利すぎた話
masasuzu
0
46
2026-04-14 Jagu'e'r Cloud Native分科会 Terraform Stateにおけるシークレットの平文保存という課題とその解決
masasuzu
1
61
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
430
2026-03-23 Ops-JAWS Meetup39 Session Managerを使った セキュアなサーバーアクセス
masasuzu
2
160
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
3
490
2026-03-03 Jagu'e'r Tech Writer Meetup #19 登壇のネタ作りについて
masasuzu
0
290
2026-02-24 月末 Tech Lunch Online #10 Cloud Runのデプロイの課題から考えるアプリとインフラの境界線
masasuzu
0
200
2025-11-21 社内エンジニア勉強会 改めて理解するVPC Endpoint
masasuzu
0
460
2025-11-08 Security JAWS TerraformによるIAM Policy記述ガイド
masasuzu
2
1.5k
Other Decks in Technology
See All in Technology
AIで政治は変わるのか? — 中高生と考えたAI時代の民主主義(東海高校サタデープログラム)
eitarosuda
0
400
最近評価が難しくなった
maroon8021
0
250
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
160
20260702_生成AIはどこまで成長するのか_チャットだけじゃない世界
doradora09
PRO
0
110
なぜ人は自分のプロジェクトを 「なんちゃってアジャイル」と 自嘲するのか
kozotaira
0
260
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.3k
なぜ私たちのSREプラクティスはなかなか機能しないのか 〜システムより先に組織を見る〜 / Why our SRE practices aren't really working
vtryo
1
1.5k
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
1
1.3k
ローカルLLMとLINE Botの組み合わせ その3 / LINE DC Generative AI Meetup #8
you
PRO
0
110
Why is RC4 still being used?
tamaiyutaro
0
300
Claude Code 珍プレー好プレー
shinyasaita
0
270
Agentic AI 時代のテスト手法: Kiro とはじめるプロパティベーステスト (AWS Summit Japan 2026 | DEV212)
ymhiroki
0
210
Featured
See All Featured
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
Agile that works and the tools we love
rasmusluckow
331
22k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
The Pragmatic Product Professional
lauravandoore
37
7.4k
Producing Creativity
orderedlist
PRO
348
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
210
How to Talk to Developers About Accessibility
jct
2
280
How to train your dragon (web standard)
notwaldorf
97
6.7k
Scaling GitHub
holman
464
140k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
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のトピックもあるので、今後も選択肢 の一つとして調べていきたいところです。 まとめ