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
27
2026-04-14 Jagu'e'r Cloud Native分科会 Terraform Stateにおけるシークレットの平文保存という課題とその解決
masasuzu
1
54
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
410
2026-03-23 Ops-JAWS Meetup39 Session Managerを使った セキュアなサーバーアクセス
masasuzu
2
150
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
3
480
2026-03-03 Jagu'e'r Tech Writer Meetup #19 登壇のネタ作りについて
masasuzu
0
220
2026-02-24 月末 Tech Lunch Online #10 Cloud Runのデプロイの課題から考えるアプリとインフラの境界線
masasuzu
0
180
2025-11-21 社内エンジニア勉強会 改めて理解するVPC Endpoint
masasuzu
0
430
2025-11-08 Security JAWS TerraformによるIAM Policy記述ガイド
masasuzu
2
1.4k
Other Decks in Technology
See All in Technology
AIのReact習熟度を測る
uhyo
2
610
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
240
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
260
入門!AWS Blocks
ysuzuki
1
140
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
140
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
370
現地で盛り上がった WWDC26 Keynote
zozotech
PRO
1
250
人材育成分科会.pdf
_awache
4
270
2026年6月23日 Syncable Tech + Start Python Club にて
hamukazu
0
120
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.2k
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
400
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.1k
For a Future-Friendly Web
brad_frost
183
10k
Music & Morning Musume
bryan
47
7.2k
Believing is Seeing
oripsolob
1
150
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
A Soul's Torment
seathinner
6
2.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
The agentic SEO stack - context over prompts
schlessera
0
820
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Joys of Absence: A Defence of Solitary Play
codingconduct
1
390
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
840
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のトピックもあるので、今後も選択肢 の一つとして調べていきたいところです。 まとめ