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
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
Search
SUZUKI Masashi
January 24, 2025
Technology
2.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
OpenTofuについて調べてみた内容
SRETT #11
https://3-shake.connpass.com/event/339212/
SUZUKI Masashi
January 24, 2025
More Decks by SUZUKI Masashi
See All by SUZUKI Masashi
2026-09-04 SRE Tech Talk #15 怠惰なTerraform / Lazy Terraform
masasuzu
0
230
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
1
850
2026-07-28 3-shakeテックランチ Cloud Run のデプロイパラメータを考える / Cloud Run Deploy Parameter
masasuzu
0
110
2026-07-24 tfpolicyを試してみたのですが、、、、
masasuzu
0
140
2026-06-18 ecspressoのtfstate参照が便利すぎた話
masasuzu
1
490
2026-04-14 Jagu'e'r Cloud Native分科会 Terraform Stateにおけるシークレットの平文保存という課題とその解決
masasuzu
1
92
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
510
2026-03-23 Ops-JAWS Meetup39 Session Managerを使った セキュアなサーバーアクセス
masasuzu
2
200
2026-03-11 JAWS-UG 茨城 #12 改めてALBを便利に使う
masasuzu
3
520
Other Decks in Technology
See All in Technology
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
0
1.1k
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
130
AI時代に、プロダクトの数だけ積み上がる所有コストをどうエンジニアリングするか / Engineering the Cost of Ownership
kzkmaeda
1
1.1k
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
250
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
3
2k
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
130
Claude Code本って、 読む必要あるの?
oikon48
1
270
Tab5をRubyで動くパソコンにする
kishima
2
280
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
0
430
スクラムで身についていた動き方を、XPで捉え直してみた
codmoninc
PRO
1
320
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
120
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
340
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Ethics towards AI in product and experience design
skipperchong
2
360
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
490
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Speed Design
sergeychernyshev
33
2.1k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
400
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to Ace a Technical Interview
jacobian
281
24k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
400
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Transcript
OpenTofuについてそろそろ調べてみるか SRETT #11 Copyright © 3-shake, Inc. All Rights Reserved.
株式会社スリーシェイクSreake事業部 鈴木勝史
Copyright © 3-shake, Inc. All Rights Reserved. おまえだれよ 2 •
すずきまさし/masasuzu/@masasuz • 株式会社スリーシェイク Sreake事業部所属 • クラウドインフラなんでも屋さんしてます ◦ 設計、運用、構築等の支援をやってます。 ◦ 支援だけでなく実作業もなんでもやります。 • AWSちょっとわかる ◦ AWS Community Builder 2024 Cloud Operation • Google Cloudほんのちょっとわかる • Terraformちょっとわかる • OpenTofuなにもわからない
• KubeCon + CloudNativeCon NA North America 2024に先日行ってきてました。 • その中で共同開催されていた
OpenTofu Dayを見て興味を得ました。 ◦ 参考: OpenTofu Day • 普段Terraform使ってますが、この機会に OpenTofuに深堀りしてみたいというのが動機です。 • 技術検証活動のテーマにも沿ってるのでちょうどいいなと思い調査してます。 ◦ 私のテーマはTerraformを中心にIaC周りの技術調査となってます。 Copyright © 3-shake, Inc. All Rights Reserved. 動機 3
• 普段Terraformを使ってます。 • OpenTofuは業務では使ってません。豆腐職人ではありません。 • 時間の制約上、説明を端折っているところがあります。 ◦ Terraformをある程度知っている前提で話してしまいます。 • 継続的に流れを追ってきたわけではないので、不正確な箇所がある可能性があります。
• 資料自体はConnpassの資料ページにすでにアップロード済みです。 • 後日もう少しまとめてブログに書きます。 Copyright © 3-shake, Inc. All Rights Reserved. 前提、おことわり、言い訳 4
Copyright © 3-shake, Inc. All Rights Reserved. 目次 5 1.
OpenTofuとは 2. ライセンスの課題 3. OpenTofuとTerraformの違い 4. まとめ
Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとは 01 6
• 2023年8月にTerraformがライセンス変更をしたことにより、これを懸念した企業やコミュニティにより OpenTFとして フォークされます。 • その後OpenTFはHashiCorp社の商標権を侵害しかねないということで OpenTofuに改名されます。 ◦ issueを見ると当時の名前付けに関しての議論を見ることができます。 ◦
参考: https://github.com/opentofu/opentofu/issues/296 • 2023年9月にLinux Foundation傘下となります。 ◦ 参考: Linux Foundation Launches OpenTofu: A New Open Source Alternative to Terraform • コマンドとしては、tofuを使用します。 ◦ サブコマンドは基本的に terraformと同様です。 Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとは 7
Copyright © 3-shake, Inc. All Rights Reserved. ライセンスの課題 02 8
• HashiCorp社は2023年8月に今後のリリースに関してライセンスを変更する旨を発表しました。 ◦ オープンソースライセンスである Mozilla Public License(MPL) v2.0から商用サービスでの利用を制限する Business Source
License(BUSLあるいはBSL) v1.1に変更。 ◦ 参考: HashiCorp adopts Business Source License • これに対して、利用企業およびコミュニティが懸念を示し、 OpenTofuをフォークしたという流れになります。 Copyright © 3-shake, Inc. All Rights Reserved. ライセンスの課題 9
• 従来BSLは本番使用が制限されます。 ◦ ただし、ライセンスの追加使用許可 (Additional Use Grant)によりTerraformと「競合製品」でなければ本番利 用の制限はないとしてます。 ▪ 参考:
https://github.com/hashicorp/terraform/blob/v1.11/LICENSE • 「競合製品」とは、有料サポート契約を含む第三者に販売される製品で、 HashiCorp のライセンス対象製品の有料版 の機能と大幅に重複する製品を指します。 ◦ TerraformでいうところのHCP Terraform(Terraform Cloud)を想定しているのか? • 組織内でTerraformを利用することは「競合製品」とはみなされない。 • だから、利用者としては基本的には問題なく利用できるとしてます。 • 参考: HashiCorp Licensing FAQ • ここから読み取れるのは、問題となるのは Terraformの機能を有償で提供している SaaSと理解できます。 Copyright © 3-shake, Inc. All Rights Reserved. HashiCorp社の言い分 10
• HashiCorp社が説明したBSLと追加使用許可はあいまいである。 ◦ そのため、自身の行動が許諾範囲内か判断が困難である。 • 「競合製品」の定義やライセンス自体が今後変更されるか不確実である。 • TerraformはOSSの恩恵を受けて成長してきてため、これからもオープンソースソフトウェアであるべき。 • 参考:
OpenTofu FAQ • OpenTofuのスポンサー ◦ Harness ◦ Gruntwork ◦ Spacelift ◦ env0 ◦ Scalr Copyright © 3-shake, Inc. All Rights Reserved. コミュニティの懸念 11
Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとTerraformの違い 03 12
• OpenTofuはTerraform1.5.6からフォークされているのでそれまでに実装されていたものは互換があります。 ◦ 1.6-alphaから分岐したと書かれている情報もあり、要検証 • Terraform 1.5.6以降に追加された機能に関しても随時取り込まれています。 • そのため、1.5までの機能を使っているのであれば素直に移行できるかとは思います。 ◦
バージョンごとに移行ガイドがあるので細かくはそれを参照すると良いです。 ◦ 参考: https://opentofu.org/docs/intro/migration/ • ただし、別のコードベースで開発がされているので、 OpenTofuのみの独自実装もあります。 • ここではいくつか個人的に気になる違いについてあげていきます。 Copyright © 3-shake, Inc. All Rights Reserved. OpenTofuとTerraformの違い 13
• 基本的には terraform を tofuに置き換えていただければよいです。サブコマンドは一緒です。 Copyright © 3-shake, Inc. All
Rights Reserved. コマンド 14
• Terraform: https://registry.terraform.io/ • OpenTofu: https://registry.opentofu.org • OpenTofu Registryが登場したときに存在した Terraform
Providerは反映されています。 • 反映されていないものに関しても issueを立てれば反映されるようです ◦ https://github.com/opentofu/registry Copyright © 3-shake, Inc. All Rights Reserved. Registry 15
• Terraformではlifecyleブロックでdestroy=falseの記述が必須です。 ◦ 参考: https://developer.hashicorp.com/terraform/language/resources/syntax#removing-resources • OpenTofuではremovedブロックを書くだけで stateから削除されます。 ◦ 参考:
https://opentofu.org/docs/language/resources/syntax/#removing-resources • リソースを削除したいなら対象 resouce 自体を削除すればいいので、 Terraformの記述方法のほうがへんな気がします。 Copyright © 3-shake, Inc. All Rights Reserved. removed ブロック 16
• Terraformでは平文でStateに保存されます。 • これに対してOpenTofuではクライアントサイドで暗号化する機能が追加されてます。 ◦ クラウドプロバイダーの KMSキーなどを利用してStateを暗号化することができます。 • Terraformではたとえsopsプロバイダーで機密情報を暗号化しても、 Stateファイルには平文で保存されているので権
限があれば機密情報が見えてしまう状態にありました。 ◦ Stateが暗号化されることにより機密情報をよりセキュアに扱えるようになります。 • 参考: https://opentofu.org/docs/language/state/encryption/ Copyright © 3-shake, Inc. All Rights Reserved. State Encryption 17
• OpenTofuではbackendブロックで変数参照ができます ◦ 参考: https://opentofu.org/docs/language/settings/backends/configuration/#variables-and-locals • Terraformで同じことをしたい場合、-backend-configを渡さないといけない。 • 同じ環境差分が少ないパターンだとこれがすごく便利 ◦
参考: On Best Practices with OpenTofu Structuring Copyright © 3-shake, Inc. All Rights Reserved. backendブロックの変数参照 18
• 複数プロジェクトでTerraform or OpenTofuを使う場合、プロジェクトごとに使用バージョンを管理する必要がありま す。いくつか選択肢を見ていきます。 • Terraformのバージョン管理ツールとしてよく使われる tfenvはOpenTofuには対応しません。 ◦ https://github.com/tfutils/tfenv/issues/409
• 代わりにTerraformとOpenTofuに対応したtenvができました。 ◦ https://github.com/tofuutils/tenv • 私はTerraformも合わせてプロジェクト内のツールのバージョン管理をまとめて asdfでやってますが、こちらは対応し て います。 ◦ https://github.com/virtualroot/asdf-opentofu • 自分はあまり使わないのですが、 aquaやmiseも両対応しています。 ◦ https://aquaproj.github.io/ ◦ https://github.com/jdx/mise Copyright © 3-shake, Inc. All Rights Reserved. バージョン管理 19
• tflintはOpenTofuをサポートしないようです。 ◦ https://github.com/terraform-linters/tflint/issues/2037 • Linterの議論自体は続いているようです。 ◦ https://github.com/opentofu/opentofu/issues/2213 Copyright ©
3-shake, Inc. All Rights Reserved. Linter 20
• HCP Terraform(旧Terraform Cloud)に相当するSaaSとしては、OpenTofuスポンサーのSpacelift、env0、Scalrな どがあります。 • tfactions、atlantis、diggerもOpenTofuに対応している模様です。 Copyright © 3-shake,
Inc. All Rights Reserved. CI/CD 21
Copyright © 3-shake, Inc. All Rights Reserved. まとめ 05 22
• 現時点でOpenTofuに移行するするべきか? ◦ 利用者側として現状では引き続き様子見 ▪ 概ね揃ってきているが、まだ足りないエコシステムもある。 ◦ IBM社にHashiCorp社の買収による統合完了の様子も追っていきたい。 ▪ >
買収による統合完了予定は、2024年12月から2025年1-3月期への延期とされています。 ▪ 参考: IBM社によるHashiCorp社買収について • とはいえ、1つのツールが使えなくなることで業務が止まるのは避けたいので常に選択肢は複数取っておきたい。 ◦ OpenTofuに限らず、Pulumi、CDK(AWS)なども選択肢として取っておきたい。 • OpenTofuはTerraformとは違う独自進化をしているので、変更を追っていきたい。 ◦ 個人的にはState暗号化とかBackendの変数参照とかTerraformに入ってほしい • それでは良い豆腐ライフを! • minamijoyoさんのTerraform職人のためのOpenTofu再入門2024がものすごく詳しいので、このスライド見るよりこっちのほう が参考になります。 Copyright © 3-shake, Inc. All Rights Reserved. まとめ 23