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
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
Search
SUZUKI Masashi
January 24, 2025
Technology
0
290
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
OpenTofuについて調べてみた内容
SRETT #11
https://3-shake.connpass.com/event/339212/
SUZUKI Masashi
January 24, 2025
Tweet
Share
More Decks by SUZUKI Masashi
See All by SUZUKI Masashi
2025-01-31 吉祥寺.pm 37 初めての海外カンファレンス
masasuzu
0
430
2024-03-29 SRETT9 Cloud SQLの可用性について
masasuzu
0
420
2023-12-18 SRETT8 Terraform使いがPulumiに入門する
masasuzu
0
2.2k
2023-12-01 吉祥寺.pm ベストプラクティスと組織とIaC
masasuzu
1
1.6k
SRETT#6_Terraformのtfstateについて考える
masasuzu
2
3k
SRETT#4黒い画面をもっと効率的に(使って自動化の時間を捻出)
masasuzu
2
430
2022-04-12 吉祥寺.pm 29
masasuzu
0
1.4k
2015-12-12-chiba.pm7
masasuzu
0
3.4k
2015-09-17_gotanda.pm6
masasuzu
0
3.5k
Other Decks in Technology
See All in Technology
Goで作って学ぶWebSocket
ryuichi1208
3
2.3k
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
150
Autonomous Database Serverless 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
17
45k
Tech Blogを書きやすい環境づくり
lycorptech_jp
PRO
1
270
クラウドサービス事業者におけるOSS
tagomoris
3
960
Exadata Database Service on Cloud@Customer セキュリティ、ネットワーク、および管理について
oracle4engineer
PRO
1
1.5k
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
890
AI エージェント開発を支える MaaS としての Azure AI Foundry
ryohtaka
6
650
LINEギフトにおけるバックエンド開発
lycorptech_jp
PRO
0
130
デスクトップだけじゃないUbuntu
mtyshibata
0
580
ローカルLLMを活用したコード生成と、ローコード開発ツールへの応用
kazuhitoyokoi
0
140
Share my, our lessons from the road to re:Invent
naospon
0
110
Featured
See All Featured
RailsConf 2023
tenderlove
29
1k
Site-Speed That Sticks
csswizardry
4
390
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
350
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
A designer walks into a library…
pauljervisheath
205
24k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
A Philosophy of Restraint
colly
203
16k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
640
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