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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
9
2026-04-14 Jagu'e'r Cloud Native分科会 Terraform Stateにおけるシークレットの平文保存という課題とその解決
masasuzu
1
53
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
400
2026-03-23 Ops-JAWS Meetup39 Session Managerを使った セキュアなサーバーアクセス
masasuzu
2
150
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
3
470
2026-03-03 Jagu'e'r Tech Writer Meetup #19 登壇のネタ作りについて
masasuzu
0
210
2026-02-24 月末 Tech Lunch Online #10 Cloud Runのデプロイの課題から考えるアプリとインフラの境界線
masasuzu
0
180
2025-11-21 社内エンジニア勉強会 改めて理解するVPC Endpoint
masasuzu
0
420
2025-11-08 Security JAWS TerraformによるIAM Policy記述ガイド
masasuzu
2
1.4k
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
720
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
360
Kubernetesにおける学習基盤とLLMOpsの概要
ry
1
230
AI Engineering Summit Tokyo 2026 AIの前に、やることがある 〜医療データ企業の4フェーズ〜
dtaniwaki
0
2.5k
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
19
6.4k
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
260
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1k
RAG を使わないという選択肢
tatsutaka
1
150
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
570
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
1.3k
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
710
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
160
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Deep Space Network (abreviated)
tonyrice
0
170
The Language of Interfaces
destraynor
162
27k
Side Projects
sachag
455
43k
Building Adaptive Systems
keathley
44
3k
Paper Plane (Part 1)
katiecoart
PRO
0
8.8k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
380
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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のトピックもあるので、今後も選択肢 の一つとして調べていきたいところです。 まとめ