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
110
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
2024-03-29 SRETT9 Cloud SQLの可用性について
masasuzu
0
410
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
2.9k
SRETT#4黒い画面をもっと効率的に(使って自動化の時間を捻出)
masasuzu
2
420
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
2015-07-10-kichijoji.pm4_yurui_template
masasuzu
0
1.4k
Other Decks in Technology
See All in Technology
FinJAWS_reinvent2024_recap_database
asahihidehiko
2
230
Godot Engineについて調べてみた
unsoluble_sugar
0
460
データ基盤におけるIaCの重要性とその運用
mtpooh
5
740
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
170
Site Reliability Engineering on Kubernetes
nwiizo
6
2.2k
サービスローンチを成功させろ! 〜SREが教える30日間の攻略ガイド〜
mmmatsuda
2
1.9k
スクラムマスターの活動と組織からの期待のズレへの対応 / Dealing with the gap between Scrum Master activities and organizational expectations
pauli
1
810
ブロックチェーンR&D企業における SREの実態 / SRE Kaigi 2025
datachain
0
1.6k
東京Ruby会議12 Ruby と Rust と私 / Tokyo RubyKaigi 12 Ruby, Rust and me
eagletmt
3
1.2k
Microsoft Ignite 2024 最新情報!Microsoft 365 Agents SDK 概要 / Microsoft Ignite 2024 latest news Microsoft 365 Agents SDK overview
karamem0
0
120
新卒1年目、はじめてのアプリケーションサーバー【IBM WebSphere Liberty】
ktgrryt
0
170
RevOpsへ至る道 データ活用による事業革新への挑戦 / path-to-revops
pei0804
1
130
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
50
3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Writing Fast Ruby
sferik
628
61k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
580
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Visualization
eitanlees
146
15k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
GitHub's CSS Performance
jonrohan
1030
460k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Thoughts on Productivity
jonyablonski
68
4.4k
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